循环列表包含内容和索引

时间:2012-07-13 17:53:51

标签: python list loops

我常常循环访问python列表以获取内容的索引。我通常做的是以下几点:

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函数内部的部分。还有更优雅/ Pythonic的方法吗?

6 个答案:

答案 0 :(得分:166)

使用enumerate()

>>> 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)

答案 1 :(得分:63)

答案 2 :(得分:21)

和其他人一样:

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

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

换句话说,您可以为enumerate()生成的索引/计数指定为 起始值 ,如果您不想要索引以默认值零开始

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

答案 3 :(得分:3)

enumerate就是你想要的:

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

答案 4 :(得分:3)

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

答案 5 :(得分:3)

enumerate()让这更漂亮:

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

有关详情,请参阅here