只需要索引:枚举或(x)范围?

如果我只想在循环中使用索引,我应该更好地将range/xrange函数与len()结合使用

a = [1,2,3]
for i in xrange(len(a)):
    print i 

enumerate ? 即使我根本不使用p

for i,p in enumerate(a):
    print i    

我会使用enumerate因为它更通用 - 例如它可以在迭代和序列上工作,而仅仅返回对象引用的开销并不是什么大不了的事 - 虽然xrange(len(something))虽然(对我来说)按照您的意图更容易读取 - 将不支持len对象打破...


这是一个罕见的要求 - 从容器中使用的唯一信息是它的长度! 在这种情况下,我确实将这个事实明确并使用第一个版本。


在len中使用xrange是一种常见的用例,所以是的,如果您只需要按索引访问值,则可以使用它。

但是如果你更喜欢使用枚举出于某种原因,你可以使用下划线(_),这只是一个经常看到的符号,表明你不会以某种有意义的方式使用变量:

for i, _ in enumerate(a):
    print i

还有一个使用下划线(_)可能发生的陷阱。 在i18n库和系统中将'翻译'功能命名为_也是常见的,因此请注意将它与gettext或其他类似的库(thnks to @lazyr)一起使用。

链接地址: http://www.djcxy.com/p/23995.html

上一篇: Only index needed: enumerate or (x)range?

下一篇: Should you always favor xrange() over range()?