我创建了一个枚举对象,并通过枚举迭代了一个列表。之后,我尝试第二次,我无法在解释器中获取任何输出。
myList = ["Red", "Blue", "Green", "Yellow"]
enum = enumerate(myList, 0)
for i in enum: # this printed the output
print(i)
for j in enum: # this did not print the output
print(j)
为什么我不能两次使用枚举对象?
答案 0 :(得分:3)
enumerate
是一个迭代器,这意味着一旦它在单个上运行,即循环或next
被调用,它对内存中值的引用已经用尽,因此,仅仅是一个空列表( []
)将是第二次在结构上调用next
或for
已应用的结果。
但是,要解决此问题,您可以将结果转换为列表,或将内容添加到另一个列表中:
val = iter([i**2 for i in range(10)])
new_result = list(val)
>>>[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#create a new structure:
val = iter([i**2 for i in range(10)])
other_val = [ for i in val]
或者,应用next
:
val = iter([i**2 for i in range(10)])
while True:
try:
v = next(val)
#do something with v
except StopIteration:
break