1.列表是动态数组,他们可以改变元素,对内部数据执行排序、插入、删除等功能。
2.元素是静态数组,他们不可变,一旦其元素确定下来,其内部数据便不可在更改。
元素缓存于Python运行时环境,这意味着我们每次使用元组时无需访问内核去分配内存。
3.当动态数组(列表)第一次添加新的元素(列)时,系统会生成一个新的列表,同时销毁旧的列表。这个列表会预留足够的空间,保证新列表的大小M>N(旧列表的空间),这是因为添加元素这个操作可能并不只有一次,第一次是个开端,通过预留足够空间的做法,我们就可以减少这一分配空间的操作次数以及内存复制的次数,这点非常重要,因为内存复制可能非常昂贵,特别是当列表大小开始增长后。
4.tuple最大的特性,是函数可以返回多个值,这个特性很常用。
tuple放弃了对元素的增删,(内存结构设计上变得更精简),换取的是性能上的提升,创建tuple比list要快,存储空间比list占用更小,元组里只有一个元素的时候,逗号(,)非常重要
5.彻底搞懂Python切片操作https://www.jianshu.com/p/15715d6f4dad
6.列表
三大优点:
-
异构性(可包含几种不同的数据类型,甚至可嵌套列表)、
-
有序性(执行切片操作)
注:切片操作不会改变原有的列表,而是复制一份新的列表。
-
可任意修改(列表的大小和内容可以随意改变,删除、增加、修改、排序列表元素)
注:而修改元素时,是在原有内存地址上直接修改列表对象,称之为“本地修改”。
- append(num):直接将元素加在列表末尾
- insert(x1,num):可以选择插入元素的位置
- extend( [list] ):可以在尾部一次性加入多个元素
7.字典
字典这个容器类型非常好用,也非常重要
1.字典和列表完全不同的,字典里的对象是无序的,他是通过一对对的键值对来反映一种映射关系。字典里,每个键都是唯一的,我们可以通过键来存取对应的值,而不能像列表那样通过位置来索引。
2.对字典的读取和修改也很简单
3.字典的动态生成方法
(1)用列表生成动态字典
dict(zip(key_list, value_list))
(2)用键值对元组组成的列表构成字典
dict( [ (#,#), (#,#),(#, #) ] )
4.访问字典时,可能会出现所要访问键值对不存在的情况,为了避免这种情况,可采用一种高级的访问方式:get(‘d’, 0) (get函数中第二个参数0表示返回值为0,若不设置,则返回None)
e.g. D = {‘a’: 11, ‘b’:22, ’c’:33}
print(D.get(‘d’, 0))
5.为了不一个一个的手动访问字典键,而是一次性的获取所有的键,我们可以用下面的方法来一次性获取包含所有键/值/键值对的列表:
D = {‘a’: 11, ‘b’:22, ’c’:33}
print(list(D.keys()))
print(list(D.values()))
print(list(D.items()))
6.虽然字典是无序的,但是我们任然可以对字典的键进行排序
sorted(D)
sorted(D.keys())