列表[ ]:按顺序存放元素,有索引,可修改
元组( ):按顺序存放元素,有索引,不可修改
字典{ }:以键值对存放数据,无索引,其中,key是不可变的
- 字符串、range、列表、元组皆为序列类型
- 【(’a’)】是字符串加括号,不是元组;【(‘a’,)】是只有一个元素的元组
# 3.2 列表与元组的通用用法(不涉及修改元素)
- 索引:正数从0开始,负数从-1开始——倒数第一个元素
- 子序列 slice() [start : end : step]:含start,不含end;start, end可以是负数
- 加法:列表 + 列表,元组 + 元组,列表与元组不能直接相加
- 乘法:将元素重复N次,得到新的列表或元组
- in:str in tuple 或者 str in list 返回bool类型
- 长度、最值:len(),max(),min() 若元素为字符串,比较ASCII编码的值
- 序列封包:把多个值赋给同一变量时,python会把多个值封装成元组
>>> a = 1,2,3
>>> a
(1, 2, 3)
- 序列解包:将序列赋值给多个变量,要求变量个数 = 元素个数 序列可以是元组或者列表
>>> a,b = (1,2)
>>> print(a,b)
1 2
- 同时运用序列封包与序列解包
>>> a,b,c = 1,2,3
>>> print(a,b,c)
1 2 3
- 还可以只序列解包一部分,余下部分仍然以元组或列表形式保存,用【*】标示
>>> a,b,*c = 1,2,3,4
>>> print(a,b,c)
1 2 [3, 4]
# 3.3 列表用法
直接创建:[ ]
将元组、区间range转换成列表:list()——类似地,将列表、区间转换成元组可用tuple()
3.3.2 增加列表元素
append() 只接收一个元素,这个元素可以是元组、列表
extend() 可以追加多个元素,接受区间、元组、列表
insert() 可以指定元素插入的位置,例:L.insert(index, 元素)
3.3.3 删除列表元素
根据索引删除
- 删除单个元素:del list1[0]
- 删除一段:del list1[0:3]
- 删除一段并指定步长:del list1[0:3:2]
- del也可用于删除普通变量
根据元素删除
remove() 只删除第一个找到的元素,如果找不到,会报错
clear() 清空所有元素
>>> L = [1,2,1,2]
>>> L.remove(1)
>>> print(L)
[2, 1, 2]
3.3.4 修改列表元素
- 列表的元素相当于变量,可以直接赋值
>>> L = ['a']
>>> L[0] = 'b'
>>> print(L)
['b']
- slice()方法 替换、增加、删除。如果用step参数替换,前后元素数量要一致
#替换
>>> L = [1,2,3]
>>> L[1:2] = 'a' #替换索引:1
>>> print(L)
[1, 'a', 3]
#增加
>>> L = [1,2,3]
>>> L[1:1] = 'a' #给不存在的索引赋值即为增加
>>> print(L)
[1, 'a', 2, 3]
#删除
>>> L = [1,2,3]
>>> L[1:2] = [] #把要删除的索引设置为空值
>>> print(L)
[1, 3]
3.3.5 列表的其它方法
count() 计算元素出现的次数
index() 获取元素在列表中的位置(索引),可以指定查找位置:index(元素, start, end)
reverse() 反序
sort(key = …, reverse = …) 对列表进行排序。其中,key和reverse必须通过参数名指定
key:为每个元素生成一个比较大小的“键”
reverse:默认值为【False】,从小到大排序。也可设置为True
例:sort( key = len, reverse = True )——用len()函数处理每个元素并排序
pop() 将最后加入的元素列出列表,并返回这个元素。将列表当作“栈”使用,实现元素出栈
>>> L = []
>>> L.append(1)
>>> L.append(2)
>>> L.pop()
2
>>> print(L)
[1]
# 3.4 字典
D = {key1 : value1 , key2 : value2}
key可以是int, str, tup,不能是list——key不可变
创建字典:D = dict() 或者 { }
列表转字典
要求:元素都是元组/列表,且每组含2个元素
>>> L = [('a',1),('b',2)]
>>> D = dict(L)
>>> print(D)
{'a': 1, 'b': 2}
3.4.3 字典的基本用法
访问:[ ] 找不到时报错
增加:为不存在的key赋值: D[new_key] = 1
删除:del D[key]
修改:D[key] = 1
判断key是否存在:in, not in,返回bool值
3.4.4 字典的常用方法
clear() 清空
get() 相当于方括号。区别:找不到时返回None,而非报错
update(key1 : value1 , key2 : value2) 若key已存在,修改,若key不存在,增加
items(), keys(), values() 获取字典中的全部键值对、键、值,通常转存为列表:list( D.items() )
pop(key) 获取指定value,同时删除该键值对
popitem() 随机弹出一个键值对——假随机,其实是底层存储的末位
setdefault( key, value ) 若key存在,返回原value值,若key不存在,设置其默认值
fromkeys() 一次性给出多个key,并设置默认的value,通常用【dict】类直接调用
>>> dict.fromkeys([1,2],'OK')
{1: 'OK', 2: 'OK'}
3.4.5 用字典格式化字符串
在参数化符号【%s】中间,放入key名,用圆括号括起来。输出时key参数会转化为对应的值
>>> s = "my name is %(name)s"
>>> D = {'name' : 'Ailsa'}
>>> s % D
'my name is Ailsa'