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']

如何:

  1. 避免在单个句子中重复使用相同的名称(印度和印度)
  2. 仅产生一种组合(印度和澳大利亚或澳大利亚和印度)

http://pythonfiddle.com/product-without-matching-
duplicates

关注者
0
被浏览
60
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    你应该使用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']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看