我发现自己经常编写这样的代码:
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.
Sil*_*ost 17
enumerate 是答案:
for index, element in enumerate(iterable):
#work with index and element
Run Code Online (Sandbox Code Playgroud)