文章目录
7.1 List
容量初始化
在list成员个数可以预知的情况下,创建list时需预留空间正好容纳所有成员的空间
说明:与
Java
、C++
等语言的list
一样,Python
语言的list
在append()
成员时,如果没有多余的空间容纳新的成员,就会分配一块更大的内存,并将原来内存里的成员拷贝到新的内存上,并将最新append()
的成员也拷贝到此新内存空间中,然后释放老的内存空间。如果append()
调用次数很大,则如上过程会频繁发生,因而会造成灾难性性能下降,而不仅仅是一点下降。
# 错误示例:
members = []
for i in range(1, 1000000):
members.append(i)
len(members)
# 正确示例:
members = [None] * 1000000
for i in range(1, 1000000):
members[i] = i
len(members)
7.2 元素个数确定时推荐使用Tuple
在成员个数及内容皆不变的场景下尽量使用tuple替代list
说明:
list
是动态array
,而tuple
是静态array
(其成员个数以及内容皆不可变)。因此,list
需要更多的内存来跟踪其成员的状态。
此外,对于成员个数小于等于20的tuple
,Python
会对其进行缓存,即当此tuple
不再使用时,Python
并不会立即将其占用的内存返还给操作系统,而是保留以备后用。
# 错误示例:
myenum =