Python打印itertools.combinations为何输出对象地址,如何获取实际结果?
itertools模块下的combinations方法返回的是惰性迭代器对象,设计上是为了在处理大数量级的组合场景时节省内存,不会预先生成所有组合结果,所以直接打印该对象只会输出它的类型和内存地址,看不到具体内容。
方案1:一次性获取所有组合结果
如果需要直接查看所有组合,用list()将迭代器转为列表即可:
from itertools import combinations print(list(combinations(range(4), 2)))
运行后输出结果为:
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
方案2:遍历迭代器逐个处理(适合大数量级组合)
如果生成的组合数量极大,一次性转成列表会占用过多内存,可以直接遍历迭代器逐个获取组合:
from itertools import combinations for comb in combinations(range(4), 2): print(comb)
运行后输出结果为:
(0, 1) (0, 2) (0, 3) (1, 2) (1, 3) (2, 3)
内容的提问来源于stack exchange,提问作者icelov
相关产品推荐
相关产品推荐

