我发现自己经常写这样的代码:
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)?任务是在科学计算中,因此循环体中有很多东西,我认为列表理解可能不够强大。
我也欢迎有关相关概念的提示,即使我可能也没有。谢谢。
答案 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):
从长远来看,可以更轻松地阅读和理解您的代码。通常,您应该使用i
,j
,k
来表示数字,使用meaningful variable names来描述列表的元素。
即如果你有例如书籍列表并对其进行迭代,然后您应该将变量命名为book
。
答案 1 :(得分:16)
enumerate
就是答案:
for index, element in enumerate(iterable):
#work with index and element