python - 范围(len(list))还是枚举(list)?

标签 python python-2.7 iteration list-comprehension

Possible Duplicate:
Only index needed: enumerate or (x)range?

哪些会被认为更好/更清晰/更快/更“Pythonic”?我不关心列表L的内容,只关心它有多长。

a = [f(n) for n, _ in enumerate(L)]

a = [f(n) for n in range(len(L))]

如果有什么不同,f 函数也会使用 len(list)

最佳答案

一些快速的计时运行似乎使使用 range() 的第二个选项比 enumerate() 稍有优势:

timeit a = [f(n) for n, _ in enumerate(mlist)]
10000 loops, best of 3: 118 us per loop

timeit a = [f(n) for n in range(len(mlist))]
10000 loops, best of 3: 102 us per loop

只是为了好玩,使用 xrange() (Python v2.7.2)

timeit a = [f(n) for n in xrange(len(mlist))]
10000 loops, best of 3: 99 us per loop

我倾向于首先使用可读代码,然后使用 xrange()(如果可用)(即 Pre-Python v 3.x),然后使用 range( )enumerate().

关于python - 范围(len(list))还是枚举(list)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11990105/

相关文章:

python - 解析带有法语月份缩写的日期

python - 创建一个新列,该列是每个用户从第一个订单日期算起的周数?

python - 为什么使用 pip install --user 选项安装的软件包不是来自 shell 的 'visible'?

python - Python : Any way to get one process to have a write lock and others to just read on parallel?

python - <Python> for 循环中的两个迭代变量

c - 数组的迭代/递归搜索

javascript - 在javascript中迭代对象,保留 parent

python - Pyramid :如何自动生成站点地图?

python - pandas:groupby 使用作用于多个列之一的通用键函数

python - 我可以在 python3 中使 pprint 不拆分字符串,就像在 python2 中一样吗?