Python-chain.from_iterable返回内存地址而不是值

时间:2014-09-30 21:48:35

标签: python itertools chain

我试图编写一个简单的程序来接收一组元素并打印出powerset。

我正在使用python的文档中给出的powerset函数的配方:https://docs.python.org/3.4/library/itertools.html

由于某种原因而不是返回值,它返回itertools.chain对象的内存地址。

为什么要这样做?

from itertools import chain,combinations
def pwrst(iter):
    xs = list(iter)
    return chain.from_iterable( combinations(xs,n) for n in range(len(xs)+1))
s = input("Enter elements seperated by comma: ")
il = s(',')
ss = [int(x.strip()) for x in il]
pwrst(ss)

1 个答案:

答案 0 :(得分:0)

chain.from_iterable返回一个可迭代的对象(其默认值__repr__告诉您内存地址)。你实际上必须迭代它来获取值。 e.g:

list(pwrst(ss))

在正常情况下,您可能会执行以下操作:

for item in pwrst(ss):
    ...