首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我在python中遍历一个列表时,我如何得到当前的"i“数呢?

当我在python中遍历一个列表时,我如何得到当前的"i“数呢?
EN

Stack Overflow用户
提问于 2015-02-25 09:53:18
回答 2查看 91关注 0票数 0

我有一个列表,并在每个项目上迭代执行一个函数。我正在尝试打印出脚本在迭代过程中的距离。问题是我不容易得到这个职位。

下面是我目前所拥有的,但它会生成一个ValueError: 'item' is not in list

代码语言:javascript
运行
复制
that_number = len(mylist)
for i in mylist: 
     this_number = mylist.index(i)
     print this_number, " out of ", that_number
     DO SOMETHING
print "Done!"

我的目标是输出:

代码语言:javascript
运行
复制
1 out of 3
2 out of 3
3 out of 3
Done!

This question是相关的,因为它试图在列表中查找位置,但是有没有一种在不使用enumerate的情况下获得元素位置的有效方法

EN

回答 2

Stack Overflow用户

发布于 2015-02-25 09:59:13

enumerate()函数真正提供了您想要的东西。不过,对于其他方法,您可以在某个范围内执行For循环:

代码语言:javascript
运行
复制
for i in range(len(myList)):
     print myList[i], "at index", i

range(len(myList))创建了一个从0len(myList) - 1的列表,因此您可以使用该列表对列表中的每个元素进行索引。

改用生成器

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

Python 2

对于Python2,只需使用xrange而不是range

代码语言:javascript
运行
复制
for i in xrange(len(myList)):
     print myList[i], "at index", i

Python 3

对于Python3,range返回一个生成器,所以我们只需更改打印语句:

代码语言:javascript
运行
复制
for i in range(len(myList)):
     print(myList[i], "at index", i)
票数 1
EN

Stack Overflow用户

发布于 2015-02-25 09:57:33

嗯,你的列表上有重复的东西会有问题。如果它仅用于调试/显示目的

代码语言:javascript
运行
复制
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的列表?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28709804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档