[英]Python Basics: for i, element in enumerate(seq)..why/how does this work?
您好,我发现了一个有趣的代码段:
seq = ["one", "two", "three"] #edited
for i, element in enumerate(seq):
seq[i] = '%d: %s' % (i, seq[i])
>>> seq
['0: one', '1: two', '2: three']
我不知道python是如何做到的。...对我来说,元素应该是未定义的...但显然不是。.python在这里做什么?
非常感谢!
enumerate
实质上将输入列表的每个元素转换为元组列表,其中第一个元素为索引,而第二个为元素。 enumerate(['one', 'two', 'three'])
因此变成[(0, 'one'), (1, 'two'), (2, 'three')]
该位刚过for
几乎受让人i
的第一个元素和element
到第二对于列举中的每个元组。 因此,例如在第一次迭代中, i == 0
和element == 'one'
,您只需遍历其他元组即可获取其他迭代的值。
枚举函数的实际定义是这样的
enumerate(iterable[, start]) -> iterator for index, value of iterable
Return an enumerate object. iterable must be another object that supports
iteration. The enumerate object yields pairs containing a count (from
start, which defaults to zero) and a value yielded by the iterable argument.
enumerate is useful for obtaining an indexed list:
(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
但是,如果未定义参数seq,则不会返回所需的输出,而是会引发类似NameError的错误:Name seq未定义。
我不确定您想要什么,要了解枚举或此处发生了什么。 这可以帮助:
seq = ["one", "two", "three"]
for i range(3):
seq[i] = '%d: %s' % (i, seq[i])
>>> seq
['0: one', '1: two', '2: three']
实际上,这里的“ seq”是列表类的对象。 列表中的每个元素都引用不同类的独立对象。 在上述功能中; 首先,通过访问“ seq [i]”获得每个列表元素对象的引用,然后使用引用的对象值创建一个新对象(可以属于其他类),然后再次引用“ seq [i]”来创建新对象每个元素的对象。
你是对的。 seq未定义。 您的代码段无效。 只有在seq之前被设置为seq = ['one','two','three']时,它才有效。 去尝试一下!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.