Python itertools.combinations早期截止

时间:2017-10-19 13:42:43

标签: python python-3.x combinations for-in-loop

在以下代码中,唯一的项目是从对象' c'在循环产品中是第一个,尽管两者都是' c。并且' d'包含3个项目和所有3项' d'正确迭代。

from itertools import combinations

c,d = combinations(map(str, range(3)),2), combinations(map(str, range(3)),2)
for x in c:
 for y in d:
  print(x,y)

要列出的类型转换生成器解决了这个问题并打印了9行,但为什么会出现这种情况呢?

1 个答案:

答案 0 :(得分:2)

问题是cd都是迭代器,并且在第一次通过内循环之后,d已经用完了。解决这个问题的最简单方法是:

from itertools import combinations, product

c = combinations(map(str, range(3)),2)
d = combinations(map(str, range(3)),2)

for x, y in product(c, d):
    print(x,y)

这会产生:

('0', '1') ('0', '1')
('0', '1') ('0', '2')
('0', '1') ('1', '2')
('0', '2') ('0', '1')
('0', '2') ('0', '2')
('0', '2') ('1', '2')
('1', '2') ('0', '1')
('1', '2') ('0', '2')
('1', '2') ('1', '2')