我有一个列表,并在每个项目上迭代执行一个函数。我试图打印出脚本的迭代程度。问题是我不能轻易获得这个职位。
这是我到目前为止所做的,但它会生成一个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
获取元素位置的有效方法?
答案 0 :(得分:1)
enumerate()
功能真正为您提供了所需的功能。对于其他方法,您可以在范围内执行for循环:
for i in range(len(myList)):
print myList[i], "at index", i
range(len(myList))
创建一个从0
到len(myList) - 1
的列表,以便您可以使用它来索引列表中的每个元素。
对于创建另一个列表的长列表,要循环的原始大小可能是不合需要的。以下是python2和3的相同代码,它们将在generator而不是列表上执行for循环。
对于Python 2,只需使用xrange
代替range
:
for i in xrange(len(myList)):
print myList[i], "at index", i
对于Python 3 range
返回一个生成器,所以我们只需更改print语句:
for i in range(len(myList)):
print(myList[i], "at index", i)
答案 1 :(得分:0)
嗯,你的列表上有重复的问题。如果它仅用于调试/显示目的
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]的列表?