列表
- 任意对象的有序集合
- 通过偏移读取
- 可变长度、异构和任意嵌套
- 属于可变序列的分类
- 对象引用数组
实际应用中的列表
- len()
- in
- for _ in
- 列表表达式
- append()
- 索引
- 分片
- 矩阵(嵌套)
原处修改列表
索引与分片的赋值
被赋值的序列长度不一定要与赋值的分片长度相匹配,所以分片赋值可以用来替换,覆盖,增长,插入,缩短和删除。
列表方法调用
- append()
- sort()
- pop()
- extend()
- reverse()
- index()
- insert()
- remove()
- del
字典
- 通过键而不是偏移来读取
- 任意对象的无序集合
- 可变长、异构、任意嵌套
- 属于可变映射类型
- 对象引用表(散列表):key 一定要是可散列的。
常用方法:
- keys()
- values()
- items()
- copy()
- get()
- update() 合并
- .pop() 将返回被删掉的value
- len()
- del 没有返回值
- list(D.keys())
- 列表解析
- Key in dict
实际应用中的字典
字典内键与输入书序无关。
字典用法注意事项
- 序列运算无效
- 对新索引赋值会添加项
- 键不一定总是字符串
- 使用get方法避免获取不存在的key
- 可以把字典当成一种记录(即记录每一项信息)
创建字典的方法
In [170]: d={}
In [171]: d={'a':1}
In [172]: d=dict(name=1)
In [173]: d
Out[173]: {'name': 1}
In [174]: d=dict([('name',1),('age',2)])
In [175]: d
Out[175]: {'name': 1, 'age': 2}
In [179]: d=dict(zip(['a','b','c'],[1,2,3]))
In [180]: d
Out[180]: {'a': 1, 'b': 2, 'c': 3}
In [181]: d={k:v for (k,v) in zip(['a','b','c'],[1,2,3])}
In [182]: d
Out[182]: {'a': 1, 'b': 2, 'c': 3}
In [183]: d=dict.fromkeys(['a','b','c'],0)
In [184]: d
Out[184]: {'a': 0, 'b': 0, 'c': 0}
In [185]: d=dict.fromkeys('abc')
In [186]: d
Out[186]: {'a': None, 'b': None, 'c': None}
字典视图
字典的keys方法返回的类似集合,支持交集、并集这些操作。但是values方法不是集合,因为他们不是唯一的。items返回的也是集合。
In [187]: d={k:v for (k,v) in zip(['a','b','c'],[1,2,3])}
In [188]: d
Out[188]: {'a': 1, 'b': 2, 'c': 3}
In [189]: d.keys()&d.keys()
Out[189]: {'a', 'b', 'c'}
In [192]: d.keys()&{'b'}
Out[192]: {'b'}
In [193]: d.keys()&{'b':1}
Out[193]: {'b'}
In [194]: d.keys()&{'b':1,'d':100}
Out[194]: {'b'}
排序字典键
拿出字典的list(keys)进行排序。