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

31 投票
2 回答
45121 浏览
提问于 2025-04-15 18:04

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

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]

但是这样似乎不太符合“Python风格”。(你懂的……索引,真让人头疼!)有没有什么语法可以让我在使用循环、列表推导式或者生成器的时候,同时提取索引(k)和元素(i)呢?因为我在做科学计算,循环里面的内容比较复杂,所以我觉得单靠列表推导式可能不够用。

我也欢迎任何相关概念的建议,可能我还没想到的。谢谢!

2 个回答

20

enumerate 是答案:

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

你可以使用 enumerate

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

关于 循环技巧的更多信息。

编辑:
正如评论中提到的,使用其他变量名,比如

for i, item in enumerate(mylist):

会让你的代码在长远来看更容易阅读和理解。通常情况下,你应该用 ijk 来表示数字,而用 有意义的变量名 来描述列表中的元素。
比如,如果你有一本书的列表并进行遍历,那么你应该把这个变量命名为 book

撰写回答