python两种内置数据类型上各种操作的大O数量级
列表list和字典dict,这是两种重要的python数据类型,可以用来实现各种数据结构,通过运行试验来估计各种操作运行时间数量级。
类型 | list | dict |
索引 | 自然数i | 不可变类型值key |
添加 | append extend insert | b[k]= v |
删除 | pop remove | pop |
更新 | a[i]=v | b[k]=v |
正查 | a[i] a[i:j] | b[k] copy |
反查 | index(v) count(v) | 无 |
其他 | reverse sort | has_key update |
list列表数据类型常用操作性能
最常用的是:按索引取值和赋值(v = a[i] a[i] = v)
由于列表的随机访问特性,这两个操作执行时间与列表大小无关,均为O(1)
还有一个是列表增长,可以选择append()和__add__() "+"
list.append()执行时间是O(1)
list = list + [v]执行的时间是O(n+k),其中k是被加的列表长度
选择哪个方法来操作列表,决定了程序的性能
Operation | Big-O Efficiency |
index[] | O(1) |
index assignment | O(1) |
append | O(1) |
pop() | O(1) |
pop(i) | O(n) |
insert(i, item) | O(n) |
del operator | O(n) |
iteration | O(n) |
contains(i) | O(n) |
get slice[x:y] | O(k) |
del slice | O(n) |
set slice | O(n+k) |
reverse | O(n) |
concatenate | O(k) |
sort | O(nlogn) |
multiply | O(nk) |