枚举在IPython中的奇怪行为

时间:2014-05-06 01:11:36

标签: python-2.7 ipython enumerate

我似乎在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]

我遗漏的枚举对象有什么不允许以这种方式分配的吗?

1 个答案:

答案 0 :(得分:0)

这不是ipython,它是python。 enumerate返回一个生成器,你只能迭代一次!不要试图重复使用它,而是每次都写enumerate(ee_cummings)