Python中enumerate对象二次转列表为何返回空?
问题解答
先看你的代码:
a = "NITISH" a = enumerate(a) print(list(a)) print(a) a = list(a) print(a)
实际输出:
[(0, 'N'), (1, 'I'), (2, 'T'), (3, 'I'), (4, 'S'), (5, 'H')] <enumerate object at 0x0000028262DE7150> []
为什么最后输出是空列表?
核心原因是:enumerate() 返回的是迭代器对象,这类对象只能被遍历一次。
- 第一次调用
list(a)时,已经把迭代器里的所有元素全部取出来转换成列表了,这时候迭代器内部的指针已经走到了末尾,没有剩余元素可以读取。 - 之后再调用
list(a),这个迭代器已经被耗尽了,自然只能返回空列表。
怎么解决?
如果需要多次使用枚举后的元素,别直接存迭代器,而是一开始就把它转换成列表保存:
a = "NITISH" a = list(enumerate(a)) # 直接转成列表存起来 print(a) print(a) print(a)
这样每次打印都会得到相同的结果。
内容的提问来源于stack exchange,提问作者nitish ranjan
相关产品推荐
相关产品推荐

