通过内容和索引循环列表
我通过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的方式来做到这一点?
使用enumerate
内置函数: http : //docs.python.org/library/functions.html#enumerate
使用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)
像其他人一样:
for i, val in enumerate(data): print i, val
而且
for i, val in enumerate(data, 1): print i, val
换句话说,如果您不希望索引以默认值0开始,您可以指定由enumerate()生成的索引/计数的起始值 。
我前几天打印了一个文件中的行,并将enumerate()
的起始值指定为1,当向用户显示有关特定行的信息时,这比0更有意义。
enumerate
是你想要的:
for i, s in enumerate(S): print s, i
>>> for i, s in enumerate(S):
enumerate()
使这个更漂亮:
for index, value in enumerate(S): print index, value
看到这里更多。