Itertools产品,无需重复
发布于 2021-01-29 14:58:29
from itertools import product
teams = ['india', 'australia', 'new zealand']
word_and = ['and']
tmp = '%s %s %s'
items = [teams, word_and, teams]
print(list(tmp % a for a in list(product(*items))))
印刷品:
['india and india',
'india and australia',
'india and new zealand',
'australia and india',
'australia and australia',
'australia and new zealand',
'new zealand and india',
'new zealand and australia',
'new zealand and new zealand']
如何:
- 避免在单个句子中重复使用相同的名称(印度和印度)
- 仅产生一种组合(印度和澳大利亚或澳大利亚和印度)
http://pythonfiddle.com/product-without-matching-
duplicates
关注者
0
被浏览
60
1 个回答
-
你应该使用
itertools.combinations
这样的>>> from itertools import combinations >>> teams = ['india', 'australia', 'new zealand'] >>> [" and ".join(items) for items in combinations(teams, r=2)] ['india and australia', 'india and new zealand', 'australia and new zealand']
但是对于这种简单的情况,您可以运行两个循环,如下所示
>>> ["%s and %s" % (t1, t2) for i, t1 in enumerate(teams) for t2 in teams[i + 1:]] ['india and australia', 'india and new zealand', 'australia and new zealand']