我正在运行python(通过IDLE,虽然我不确定那是什么)在Mac,版本3.3.2上,出于某种原因,当我输入from itertools import *
时,它不允许我然后使用chain
和combinations
等命令。另外我似乎无法导入numpy
所以我想我可能搞砸了安装。此致
作为一个最小的工作示例:
>>> from itertools import chain
>>> chain('abc','def')
<itertools.chain object at 0x34c2130>
但是,输出应该是a b c d e f
。所以我不确定我是否需要print
结果?
答案 0 :(得分:4)
首先,你这里实际上没有问题。 itertools.chain()
不返回列表,它返回一个可迭代对象。这是优选的,因为它是惰性的(在需要之前不会计算值),这样可以提高内存效率。
值得注意的是,如果这是导入模块的问题,那么您会遇到异常,并且会发生在from itertools import chain
行。
你可以像其他任何迭代一样愉快地循环它:
>>> from itertools import chain
>>> for item in chain('abc', 'def'):
... print(item)
...
a
b
c
d
e
f
这是使用它的最佳方式,因为它将是最有效的。如果你需要一个列表(你很可能没有),你可以简单地用内置list()
来打包:
>>> list(chain('abc', 'def'))
['a', 'b', 'c', 'd', 'e', 'f']