我正在寻找一个python方法,它使用索引值而不是实际元素本身迭代列表。代码就是这样:
sigh --help
我希望看看是否已经有一个功能可以执行此操作,或者我是否应该自己添加它。
答案 0 :(得分:7)
使用enumerate
:
for index, ignore_this_its_the_value in enumerate(list):
# do stuff
但实际上:
for index in range(len(list)):
# do stuff
确实产生了正确的索引。
答案 1 :(得分:1)
for i in x:
适用于任何可迭代的内容,例如列表或生成器。
range(r)
或xrange(r)
只是一个数字列表(或此类列表的生成器)。 enumerate
可以方便地从列表中生成计数器和值。您可以使用zip(range(len(alist)), alist)
执行相同的操作。
for i, value in enumerate(alist):
alist[i] = foo(value)
我认为,是使用枚举的一个很好的例子。它提供了一种有效的阅读方式。价值观,以及修改它们的方式。
当然,如果您需要对迭代进行更多控制,则始终存在while
循环。如果您需要继续或中断,或者您需要以不寻常的方式更改索引,它会特别有用。
生成器是打包迭代的另一个好工具。
就个人而言,我最喜欢列表理解(以及生成器和字典类似物)。它是控制和紧凑的完美结合。