如何在Python中同时获取列表索引和元素?
我发现自己经常编写这样的代码:如何在Python中同时获取列表索引和元素?,python,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] 但这似乎不是“蟒蛇式的”。(你知道……indexing.Ick!)是否有一些语法允许我使用循环、列表理解或生成器同时提取索引(k)和元素(i)?这项任务是在科学计算中完成的,因此循环体中有很多东西,
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]
但这似乎不是“蟒蛇式的”。(你知道……indexing.Ick!)是否有一些语法允许我使用循环、列表理解或生成器同时提取索引(k)和元素(i)?这项任务是在科学计算中完成的,因此循环体中有很多东西,我认为单凭列表理解可能不够强大
我也欢迎关于相关概念的提示,尽管我可能没有。谢谢。您可以使用
枚举
:
for k,i in enumerate(mylist):
#do something with index k
#do something with element i
有关的更多信息
编辑:正如注释中指出的,使用其他变量名,如
for i, item in enumerate(mylist):
从长远来看,使您的代码更易于阅读和理解。通常,您应该使用i
、j
、k
来表示数字和描述列表中的元素。例如,如果您有一个图书列表并对其进行迭代,则应将变量命名为
book
答案是:
for index, element in enumerate(iterable):
#work with index and element
enumerate还允许您使用start参数在喜欢的位置启动索引。有时候这很方便。可能只有我一个人在这里,但是使用
I
作为变量来保存iterable的每个元素会让我在阅读此代码时感到厌烦。在循环代码中,索引的i
和j
不是很标准的变量名吗?但是,如果只想循环列表的某些元素,而不是整个列表,请小心。开始参数是将分配给第一个拉入项的编号,而不是原始列表中的索引。如果您在enumerate(mylist,start=12)中为i编写项,那么您将从列表中获取每个项,i从12开始计数。类似地,如果只遍历一个切片,但不设置起点,那么我从0开始。希望这对别人有帮助。