首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >enumerate()是什么意思?

enumerate()是什么意思?
EN

Stack Overflow用户
提问于 2014-03-04 20:08:58
回答 4查看 397.8K关注 0票数 336

for row_number, row in enumerate(cursor):在Python中做什么?

在这种情况下,enumerate是什么意思?

EN

回答 4

Stack Overflow用户

发布于 2014-03-04 20:10:15

enumerate() function向迭代器添加一个计数器。

因此,对于cursor中的每个元素,使用(counter, element)生成一个元组;for循环分别将该元组绑定到row_numberrow

演示:

>>> elements = ('foo', 'bar', 'baz')
>>> for elem in elements:
...     print elem
... 
foo
bar
baz
>>> for count, elem in enumerate(elements):
...     print count, elem
... 
0 foo
1 bar
2 baz

默认情况下,enumerate()0开始计数,但如果您给它第二个整数参数,它将从该数字开始计数:

>>> for count, elem in enumerate(elements, 42):
...     print count, elem
... 
42 foo
43 bar
44 baz

如果要用Python语言重新实现enumerate(),有两种方法可以实现;一种是使用itertools.count()进行计数,另一种是在generator function中手动计数

from itertools import count

def enumerate(it, start=0):
    # return an iterator that adds a counter to each element of it
    return zip(count(start), it)

def enumerate(it, start=0):
    count = start
    for elem in it:
        yield (count, elem)
        count += 1

Python更接近后者,优化后的方法是在常见的for i, ...解包情况下重用单个元组对象,并对计数器使用标准的C整数值,直到计数器变得太大而不能避免使用Python整数对象(它是无界的)。

票数 524
EN

Stack Overflow用户

发布于 2014-03-04 20:12:05

它是一个内置函数,返回一个可以迭代的对象。参见the documentation

简而言之,它循环遍历可迭代对象(如列表)的元素,以及组合在元组中的索引号:

for item in enumerate(["a", "b", "c"]):
    print item

打印

(0, "a")
(1, "b")
(2, "c")

如果你想循环遍历一个序列(或其他可迭代的东西),并且想要有一个可用的索引计数器,这是很有帮助的。如果您希望计数器从其他值(通常为1)开始,则可以将该值作为第二个参数提供给enumerate

票数 96
EN

Stack Overflow用户

发布于 2018-02-05 21:23:44

枚举函数的工作方式如下:

doc = """I like movie. But I don't like the cast. The story is very nice"""
doc1 = doc.split('.')
for i in enumerate(doc1):
     print(i)

输出为

(0, 'I like movie')
(1, " But I don't like the cast")
(2, ' The story is very nice')
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22171558

复制
相关文章

相似问题

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