我有一个列表,并在每个项目上迭代执行一个函数。我正在尝试打印出脚本在迭代过程中的距离。问题是我不容易得到这个职位。
下面是我目前所拥有的,但它会生成一个ValueError: 'item' is not in list
:
that_number = len(mylist)
for i in mylist:
this_number = mylist.index(i)
print this_number, " out of ", that_number
DO SOMETHING
print "Done!"
我的目标是输出:
1 out of 3
2 out of 3
3 out of 3
Done!
This question是相关的,因为它试图在列表中查找位置,但是有没有一种在不使用enumerate
的情况下获得元素位置的有效方法
发布于 2015-02-25 09:59:13
enumerate()
函数真正提供了您想要的东西。不过,对于其他方法,您可以在某个范围内执行For循环:
for i in range(len(myList)):
print myList[i], "at index", i
range(len(myList))
创建了一个从0
到len(myList) - 1
的列表,因此您可以使用该列表对列表中的每个元素进行索引。
改用生成器
对于长列表,创建另一个大小与原始列表一样大的列表进行循环可能是不可取的。下面是与上面相同的python2和3代码,它们将在generator而不是list上执行for循环。
Python 2
对于Python2,只需使用xrange
而不是range
for i in xrange(len(myList)):
print myList[i], "at index", i
Python 3
对于Python3,range
返回一个生成器,所以我们只需更改打印语句:
for i in range(len(myList)):
print(myList[i], "at index", i)
发布于 2015-02-25 09:57:33
嗯,你的列表上有重复的东西会有问题。如果它仅用于调试/显示目的
that_number = len(mylist)
this_number=0
for i in mylist:
this_number+=1
print this_number, " out of ", that_number
DO SOMETHING
print "Done!"
如何处理包含1,2,3,2,1的列表?
https://stackoverflow.com/questions/28709804
复制相似问题