Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无重复项的Itertools产品_Python_Python 3.x_Unique_Combinations_Itertools - Fatal编程技术网

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
    组合
    更快,但不会太多:但是,没有理由不使用组合。