看起来你想要三元组组合,替换字符串
"aa ab ac ad ae af ag"
,不包括所有元素相等的条目。
密码
import itertools as it
iterable = "aa ab ac ad ae af ag".split()
combs = it.combinations_with_replacement(iterable, 3)
pred = lambda x: len(set(x)) != 1
results = list(filter(pred, combs))
transposed = list(zip(*results))
演示
>>> for line in transposed:
... print(line)
('aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'aa', ...)
('aa', 'aa', 'aa', 'aa', 'aa', 'aa', 'ab', 'ab', 'ab', 'ab', 'ab', ...)
('ab', 'ac', 'ad', 'ae', 'af', 'ag', 'ab', 'ac', 'ad', 'ae', 'af', ...)
选项
您可以将此代码简化为一行生成器:
transposed = zip(*(i for i in it.combinations_with_replacement(iterable, 3) if len(set(i)) != 1))