如何在Python中同时获取列表索引和元素?

时间:2010-01-15 14:56:29

标签: python

我发现自己经常写这样的代码:

k = 0
for i in mylist:
    # y[k] = some function of i
    k += 1

相反,我可以做

for k in range(K):
    # y[k] = some function of mylist[k]

但这似乎不是“pythonic”。 (你知道......索引.Ick!)是否有一些语法允许我使用循环,列表推导或生成器同时提取索引(k)和元素(i)?任务是在科学计算中,因此循环体中有很多东西,我认为列表理解可能不够强大。

我也欢迎有关相关概念的提示,即使我可能也没有。谢谢。

2 个答案:

答案 0 :(得分:47)

您可以使用enumerate

for k,i in enumerate(mylist):
    #do something with index k
    #do something with element i

有关looping techniques的更多信息。

修改
正如评论中所指出的,使用其他变量名称,如

for i, item in enumerate(mylist):

从长远来看,可以更轻松地阅读和理解您的代码。通常,您应该使用ijk来表示数字,使用meaningful variable names来描述列表的元素。
即如果你有例如书籍列表并对其进行迭代,然后您应该将变量命名为book

答案 1 :(得分:16)

enumerate就是答案:

for index, element in enumerate(iterable):
    #work with index and element