在循环中执行循环列表在python中有索引

在循环中执行循环列表在python中有索引,第1张

概述假设我们的列表包含未知数量的索引,是否可以执行类似的 *** 作 i=0while foo[i]: ... i+=1 在我的例子中,我得到错误,因为索引将超出范围,但我认为你有我想要的? 你在寻找的是: for i, elem in enumerate(foo): #i will equal the index #elem will be the element in f 假设我们的列表包含未知数量的索引,是否可以执行类似的 *** 作

i=0while foo[i]:    ...    i+=1

在我的例子中,我得到错误,因为索引将超出范围,但我认为你有我想要的?

解决方法 你在寻找的是:

for i,elem in enumerate(foo):    #i will equal the index    #elem will be the element in foo at that index    #etc...

enumerate内置需要一些序列(如列表或生成器),并产生一个元组,其中第一个元素包含迭代编号,第二个元素包含该迭代序列的值.

由于您特别询问“未知数量的索引”,我还想澄清一下,枚举是懒惰的.与len不同,len需要提前计算/评估整个序列(假设您正在处理比简单列表更复杂的事情),并因此无法获得无限列表,并为某些任意生成器花费不确定的时间函数(然后需要再次运行,可能导致副作用),枚举仅计算列表中的下一个序列.这可以通过以下事实来显示:它将按照预期最简单的方式执行具有未知条目数的序列的示例:无限列表:

import itertoolsfor i,elem in enumerate(itertools.cycle('abc')):    #This will generate -    # i = 0,elem = 'a'    # i = 1,elem = 'b'    # i = 2,elem = 'c'    # i = 3,elem = 'a'    # and so on,without causing any problems.

编辑 – 回应您的意见:

使用for … enumerate …本质上比使用for更昂贵(假设你有额外的枚举开销).但是,我认为如果你跟踪你的序列元素的索引,那么这个小小的开销对于它所提供的非常pythonic的表示来说是一个很小的代价(也就是说,i = 0; i = 1是一个非常C风格的成语).

在做了一点搜索之后,我挖出了(然后agf更正了网址)the source code for the enumerate function(另外,反转功能).它非常简单,它看起来并不昂贵.

总结

以上是内存溢出为你收集整理的在循环中执行循环列表在python中有索引全部内容,希望文章能够帮你解决在循环中执行循环列表在python中有索引所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存