题
我正在写一python功能,看起来像这样的东西
def foo(some_list):
for i in range(0, len(some_list)):
bar(some_list[i], i)
因此,它被称为与
x = [0, 1, 2, 3, ... ]
foo(x)
我不得不假定索引的访问的名单 O(1)
, 但是,惊讶地发现,对于大型列出了这个明显的速度比我预期的。
我的问题是如何是蟒蛇列出的实现,和什么是运行复杂程度以下
- 索引:
list[x]
- 出从结束:
list.pop()
- 出现,从开始:
list.pop(0)
- 延伸的清单:
list.append(x)
额外的信贷,接或任意的持久性有机污染物。
解决方案
那里是 一个非常详细的表格上python wiki 回答你的问题。
然而,在你的特别的实例应用 enumerate
得到一个指数的一个迭代内一个循环。像这样:
for i, item in enumerate(some_seq):
bar(item, i)
其他提示
答案是"不确定".蟒蛇的语言没有定义的基础实施。这里有一些链接到一个邮件列表螺纹你可能会感兴趣。
此外,更多的功能已大大增强的方式编写你的循环将是这样的:
def foo(some_list):
for item in some_list:
bar(item)
不能评论,所以
如果你需要的索引和价值,然后用枚举:
for idx, item in enumerate(range(10, 100, 10)):
print idx, item
蟒蛇名单实际上没有什么但阵列。因此,
编制索引需要O(1)
pop和追加再次应该O(1)为每个文档
查阅以下链接的详细信息:
http://dustycodes.wordpress.com/2012/03/31/pythons-data-structures-complexity-analysis/
不隶属于 StackOverflow