Python-四种数据结构
列表
列表(list)用来存储不同的数据类型,使用 [ ] ,逗号分隔不同的数据项
num = ['one','two','three']

列表的特性
索引

print(num)
print(num[0])
print(num[-1])

切片
print(num[1:])
print(num[:-1]) # 打印最后一个元素之前的内容
print(num[::-1]) # 倒序输出

重复
print(num*3)

连接
num1 = ['four','five','six']
print(num + num1)

列表里嵌套列表
list = [[1,2,3],['a','b','c'],['one','two','three']]
print(list[0][1]) # 打印第一个列表的第二个元素
print(list[:][2]) # 打印第二个列表

列表的增删改查
增加
# 连接的方式添加
num2 = num + ['seven']
print(num2)
# 单个元素的添加 - append()
num2.append('eight')
print(num2)
# 多个元素的添加 - extend()
num2.extend(['nine','ten'])
print(num2)
# 指定位置插入元素 - insert()
# 在第三个位置前插入 four
num2.insert(2,'four')
print(num2)

删除
num3 = num
print(num3)
# 移除列表中的一个元素,默认最后一个元素,并且返回该元素的值 - pop()
num3.pop(0)
print(num3)
# 指定删除对象的名字 - remove()
num3.remove('two')
print(num3)
# 直接删除整个列表 - del
del num3
print(num3)

赋值
num3 = num
print(num3)
num3[0] = 1
num3[1:] = [2,3]
print(num3)

查看
num3 = num
print(num3)
# 查看出现的次数
num3.count('two')
# 查看指定元素的索引值
num3.index('one')
# 从第一个和第三个元素之间查看two
num3.index('two',0,3)

字典
字典这种数据结构的特征使用名称-内容进行数据的构建,在python中分别对应着键(key)- 值(value),习惯上称之为键值对
特征:
- 字典中数据必须是以键值对的形式出现的
- 逻辑上讲,键是不能重复的,而值是可以重复的
- 字典中的键(key)是不可变的,也就是无法修改的,而值(value)是可变的,可修改的,可以是任何对象
创建字典
# 直接创建
test = {'num1':'one','num2':'two','num3':'three'}
print(test)
# 将双元素序列转化为字典 - dict()
items = [('num1','one'),('num2','two'),('num3','three')]
test1 = dict(items)
print(test1)

字典访问
# 创建测试字典
test2 = {'num1':[1,'one','a'],'num2':[2,'two','b']}
# 打印 num1 对应的内容列表
print(test2['num1'])
# 打印 num1 对应的内容列表的第二个
print(test2['num1'][1])

修改与添加字典
num = {'num1':[1,'one'],'num2':[2,'two']}
print(num)
# 修改 num1 对应的内容为 a
num['num1'] = 'a'
print(num)
# 添加 num3 及其对应值 3
num['num3'] = 3
print(num)

字典删除
num = {'num1':[1,'one'],'num2':[2,'two'],'num3':[3,'three']}
print(num)
# del 删除指定条目
del num['num1']
print(num)
# 删除指定条目-pop(键,默认值),不加默认值系统会报错
num.pop('num1')
num.pop('num1','不存在')
num.pop('num2')
print(num)
# 清空目录-clear(),空字典
num.clear()
print(num)
# del 删除字典
del num
print(num)

查找字典
num = {'num1':[1,'one'],'num2':[2,'two'],'num3':[3,'three']}
print(num)
# 成员运算符 in -查找条目在字典中,返回值为true,反之为 false
'num1' in num
'num4' in num
# 获取条目值 - get()。如果指定键不在字典中,有默认值返回默认值,没有默认值不返回任何信息
num.get('num4','不存在')
num.get('num4')

字典的整体操作
遍历
num = {'num1':[1,'one'],'num2':[2,'two'],'num3':[3,'three']}
print(num)
# 遍历字典中所有的键 - keys()
for key in num.keys():
print(key,num[key])
# 遍历字典中所有的值 - values(),无法映射到对应的键
for value in num.values():
print(value)
# 遍历字典中所有的条目 - items()
for key,value in num.items():
print('key: ',key)
print('value',value)

字典合并
N1 = {'num1':[1,'one'],'num2':[2,'two']}
print(N1)
N2 = {'num3':[3,'three']}
print(N2)
for key,value in N1.items():
N2[key] = value
print(N1)
print(N2)

元组
一般通过直接赋值的方式创建元组,用逗号间隔元素,可以用括号括起来,也可以不用。元组不可修改,但可以像列表一样被查看索引
创建元组
N1 = (1,'a','one')
print(N1,type(N1))
N2 = 1,'a','one'
print(N2,type(N2))
# 单个元素后面加一个逗号,类型为元组
N3 = ('two',)
print(N3,type(N3))
N4 = ('two')
print(N4,type(N4))

元组元素访问
num = (1,2,3,4,5,6,7,8,9)
print(num,type(num))
#使用索引访问元组中的某个元素
print(num[2])
print(num[-1])
#使用切片访问元组中的一组元素
print(num[1:3])
print(num[-3:-1])
print(num[0:7:2])

集合
集合是一个无序的不重复元素序列,不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加删除
创建集合
可以使用大括号 {} 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典
# set()只能传递一个参数,多个参数可以先构建一个列表
N1 = set('a','b','c')
N1 = set(['a','b','c'])
print(type(N1))
N2 = {'c','d'}
print(type(N2))
N3 = {}
print(type(N3))
N4 = set()
print(type(N4))

集合的基本操作
添加元素
print(N1)
# add() - 只能添加一个元素,如果元素已存在,则不进行任何操作
N1.add('d')
print(N1)
# update() - 可以添加元素,且参数可以是列表,元组,字典等
N1.update(['a','f'])
print(N1)

移除元素
print(N1)
# remove() - 如果元素不存在,则会发生错误
N1.remove('a')
print(N1)
# discard() - 如果元素不存在,不会发生错误
N1.discard('b')
print(N1)

清空集合
print(N1)
# 清空集合 - clear()
N1.clear()
print(N1) # 空白集合打印 set(),{}表示的是空白字典
print(type(N1))

参考书目:编程小白的第1本Python入门书 - 侯爵
网友评论