为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中创建“反向”列表的最佳方法?

在Python中创建“反向”列表的最佳方法?

炎炎设计 2019-12-13 10:23:04
在Python中,创建一个与其他列表的项目相同但顺序相反的新列表的最佳方法是什么?(我不想就地修改现有列表。)这是我想到的一种解决方案:new_list = list(reversed(old_list))也可以复制old_list然后在原处反向复制:new_list = list(old_list) # or `new_list = old_list[:]`new_list.reverse()有没有我忽略的更好的选择?如果不是,是否有令人信服的理由(例如效率)来使用上述方法中的一种?
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

调整项

值得为sdolan的时间计算提供基准基准/调整,以显示“反转”的性能,而无需经常进行不必要的list()转换。此list()操作为运行时增加了26个usecs,仅在迭代器不可接受的情况下才需要此操作。


结果:


reversed(lst) -- 11.2 usecs


list(reversed(lst)) -- 37.1 usecs


lst[::-1] -- 23.6 usecs

计算:


# I ran this set of 100000 and came up with 11.2, twice:

python -m timeit "ol = [1, 2, 3]*1000; nl = reversed(ol)"

100000 loops, best of 3: 11.2 usec per loop


# This shows the overhead of list()

python -m timeit "ol = [1, 2, 3]*1000; nl = list(reversed(ol))"

10000 loops, best of 3: 37.1 usec per loop


# This is the result for reverse via -1 step slices

python -m timeit "ol = [1, 2, 3]*1000;nl = ol[::-1]"

10000 loops, best of 3: 23.6 usec per loop

结论:


这些测试的结论reversed()比[::-1]12.4 usecs 的切片速度更快


查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 669 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信