Python 无重复项的Itertools产品
印刷品:Python 无重复项的Itertools产品,python,python-3.x,unique,combinations,itertools,Python,Python 3.x,Unique,Combinations,Itertools,印刷品: 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)))) 如何: 避免在一句话中重复相同的名字(印度和印度) 只生成一个组合(印度和澳大利亚或澳大利亚和
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']
>>> 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']
但是对于这个简单的例子,可以运行两个循环,如下所示
['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']
>>> 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']
哪一个更快?组合还是枚举?@emaillenin好的,我运行了一个简单的测试,它确认了使用您的示例数据集,
组合
更快。@emaillenin组合
更快,但不会太多:但是,没有理由不使用组合。