关于python:使用内容和索引遍历列表

Loop through list with both content and index

本问题已经有最佳答案,请猛点这里访问。

对于我来说,通过一个python列表来获取内容及其索引是非常常见的。我通常做的是:

1
2
3
S = [1,30,20,30,2] # My list
for s, i in zip(S, range(len(S))):
    # Do stuff with the content s and the index i

我觉得这个语法有点难看,尤其是zip函数内部的部分。有没有更优雅的/Python式的方法?


使用enumerate()

1
2
3
4
5
6
7
8
9
>>> S = [1,30,20,30,2]
>>> for index, elem in enumerate(S):
        print(index, elem)

(0, 1)
(1, 30)
(2, 20)
(3, 30)
(4, 2)


使用enumerate内置函数:http://docs.python.org/library/functions.html enumerate


像其他人一样:

1
2
for i, val in enumerate(data):
    print i, val

而且

1
2
for i, val in enumerate(data, 1):
    print i, val

换句话说,您可以指定枚举()生成的索引/计数的起始值,如果您不希望索引以默认值零开始,该值很有用。

前几天,我在一个文件中打印了行,并为enumerate()指定了起始值为1,这在向用户显示特定行的信息时比0更有意义。


enumerate()使这个更漂亮:

1
2
for index, value in enumerate(S):
    print index, value

更多信息请参见此处。


1
>>> for i, s in enumerate(S):

你想要的是enumerate

1
2
for i, s in enumerate(S):
    print s, i