无法两次读取枚举对象

问题描述

我是一个新手,我想让自己了解枚举函数及其生成的枚举对象的行为。

引用枚举对象似乎耗尽了它的条目。尝试以相同的方式连续两次与之交互会产生不同的结果。

我一直认为它像一个列表,但这显然不是这种对象的行为方式。有人可以向我解释这种怪异的行为,还是将我引向一些会有用的资源?

MyList = ['one','two','three']
EnumList = enumerate(MyList,start=1)

print("Pass 1:")
print(EnumList)
for i in EnumList:
    print(i)
    
print("\nPass 2:")
print(EnumList)
for i in EnumList:
    print(i)
    
print("\nEnd")

输出

Pass 1:
<enumerate object at 0x000001D79D0B4DB8>
(1,'one')
(2,'two')
(3,'three')

Pass 2:
<enumerate object at 0x000001D79D0B4DB8>

End

解决方法

enumarate返回一个生成器,而不是list。只需使用list(enumerate(data))

MyList = ['one','two','three']
EnumList = list(enumerate(MyList,start=1))

print("Pass 1:")
print(EnumList)
for i in EnumList:
    print(i)
    
print("\nPass 2:")
print(EnumList)
for i in EnumList:
    print(i)
    
print("\nEnd")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...