我似乎在IPython shell中遇到了一些奇怪的行为,而关于枚举对象的笔记本,或者我不理解某些东西。特别是当我在操作中调用enumerate函数时,我只能获得以下输出。我不能创建一个枚举对象,然后根据它得到输出,这是正常的吗?
设置:
In [1]: ee_cummings = ['sun', 'moon', 'stars', 'rain']
In [2]: enumerate_object = enumerate(ee_cummings)
In [3]: list(enumerate_object)
Out[3]: [(0, 'sun'), (1, 'moon'), (2, 'stars'), (3, 'rain')]
现在以下内容没有给我任何输出:
In [4]: for tup in enumerate_object:
print tup
In [5]: [index for index, element in enumerate_object]
但以下确实给出了预期的输出:
In [6]: for tup in enumerate(ee_cummings):
print tup
(0, 'sun')
(1, 'moon')
(2, 'stars')
(3, 'rain')
In [7]: [index for index, element in enumerate(ee_cummings)]
Out[7]: [0, 1, 2, 3]
我遗漏的枚举对象有什么不允许以这种方式分配的吗?
答案 0 :(得分:0)
这不是ipython,它是python。 enumerate
返回一个生成器,你只能迭代一次!不要试图重复使用它,而是每次都写enumerate(ee_cummings)
。