Python列表/字典操作 时间复杂度

Python 列表/字典操作时间复杂度

#1 环境

Python3.7.3

#2 List

操作操作说明时间复杂度
a = index(value)索引赋值O(1)
append(value)队尾添加O(1)
pop()队尾删除O(1)
pop(index)根据索引删除某个元素O(n)
insert(index, value)根据索引插入某个元素O(n) iterration
search(in)列表搜索(其实就是in关键字)O(n)
slice [x:y]切片, 获取x, y为O(1), 获取x,y 中间的值为O(k)O(k)
del slice [x:y]删除切片,删除切片后数据需要重新移动/合并O(n)
reverse列表反转O(n)
sort排序O(nlogn)

#3 Dict

操作操作说明时间复杂度
copy复制O(n)
get(value)获取O(1)
set(value)修改O(1)
delete(value)删除O(1)
search(value)字典搜索O(1)
iterration(value)字典迭代O(n)

# 字典的特性

  • 查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
    不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
  • 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。不允许同一个键出现两次。
    键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。
  • dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样。
  • 12
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值