【发布时间】:2014-08-09 20:53:36
【问题描述】:
哪个更快更pythonic?
- 反转附加列表
- 从头开始添加列表
- 使用
deque
例如这是一些要存储到新列表中的虚构数据
# Let's say my function outputs these output individually.
x = [12,34,44,346,345,876,123]
反转附加列表:
new_list = []
for i in x:
new_list.append(i)
new_list = newlist[::-1]
添加到列表之前:
new_list = []
for i in x:
new_list.insert(0,i)
使用双端队列:
from collections import deque
for i in x:
x.appendleft(i)
请注意,我的问题不是如何反转列表。还请假设该列表的大小约为 20,000。
【问题讨论】:
-
为什么不
timeit看看? -
您不想使用
deque的任何具体原因? -
@alvas:那你肯定是计时错了,因为差别太大了。
-
@PadraicCunningham:alvas 的一位 cmets 说“因为函数正在产生,我不确定实现列表和反转是否比前置更快。”这似乎表明它是一个发电机。对于列表,
x[::-1]优于list(reversed(x))。 -
deque将比任何一个替代方案都快得多; O(1) appendleft 操作几乎就是它存在的全部意义......当然,你不会说在构建这个数据结构之后你打算做什么。如果通过索引访问任意元素是您希望能够轻松完成的事情之一,那么您将失去在使用它时构建事物的效率。
标签: python list insert reverse prepend