在python中迭代列表时,如何获得当前的“i”数?

时间:2015-02-25 01:53:18

标签: python list python-2.7 iterator

我有一个列表,并在每个项目上迭代执行一个函数。我试图打印出脚本的迭代程度。问题是我不能轻易获得这个职位。

这是我到目前为止所做的,但它会生成一个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获取元素位置的有效方法?

2 个答案:

答案 0 :(得分:1)

enumerate()功能真正为您提供了所需的功能。对于其他方法,您可以在范围内执行for循环:

for i in range(len(myList)):
     print myList[i], "at index", i

range(len(myList))创建一个从0len(myList) - 1的列表,以便您可以使用它来索引列表中的每个元素。

使用发电机

对于创建另一个列表的长列表,要循环的原始大小可能是不合需要的。以下是python2和3的相同代码,它们将在generator而不是列表上执行for循环。

Python 2

对于Python 2,只需使用xrange代替range

for i in xrange(len(myList)):
     print myList[i], "at index", i

Python 3

对于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]的列表?