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

Ste*_*joa 23 python

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

k = 0
for i in mylist:
    # y[k] = some function of i
    k += 1
Run Code Online (Sandbox Code Playgroud)

相反,我能做到

for k in range(K):
    # y[k] = some function of mylist[k]
Run Code Online (Sandbox Code Playgroud)

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

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

Fel*_*ing 51

你可以使用enumerate:

for k,i in enumerate(mylist):
    #do something with index k
    #do something with element i
Run Code Online (Sandbox Code Playgroud)

有关循环技术的更多信息.

编辑:
正如评论中指出的那样,使用其他变量名称

for i, item in enumerate(mylist):
Run Code Online (Sandbox Code Playgroud)

从长远来看,可以更轻松地阅读和理解您的代码.通常情况下,你应该使用i,j,k数字和有意义的变量名称来描述一个列表的元素.
即如果你有一个书籍列表并迭代它,那么你应该命名变量book.

  • enumerate还允许您使用start参数启动索引.这有时非常方便.http://docs.python.org/library/functions.html#enumerate (3认同)

Sil*_*ost 17

enumerate 是答案:

for index, element in enumerate(iterable):
    #work with index and element
Run Code Online (Sandbox Code Playgroud)