生成列表中的组合,但只能按升序生成

时间:2016-01-28 11:22:55

标签: python-2.7 itertools

我有一个清单,

a=['z','g','b','h']

现在,当我这样做时,

for p in itertools.permutations(a,2):print p

我明白了,

('z', 'g')
('z', 'b')
('z', 'h')
('g', 'z')
('g', 'b')
('g', 'h')
('b', 'z')
('b', 'g')
('b', 'h')
('h', 'z')
('h', 'g')
('h', 'b')

我只需要这些组合,

('z', 'g')
('z', 'b')
('z', 'h')
('g', 'b')
('g', 'h')
('b', 'h')

不需要跟随。哪个是相反的顺序,

('g', 'z')
('b', 'z')
('b', 'g')
('h', 'z')
('h', 'g')
('h', 'b')

有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

迟到但自己找到了: - )

只需使用组合而不是排列。

for p in itertools.combinations(a,2):print p


Out[1]:
('z', 'g')
('z', 'b')
('z', 'h')
('g', 'b')
('g', 'h')
('b', 'h')