python - Itertools 乘积不重复

标签 python python-3.x unique combinations python-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))))

打印:

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

最佳答案

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

关于python - Itertools 乘积不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314372/

相关文章:

python-3.x - 如何将 Pandas df 刻度数据重新采样为 5 分钟的 OHLC 数据

python - 编辑或更改已编译的 python 脚本(.exe 文件)详细信息

sql - 在 Postgresql 中,对两列的组合强制唯一

sql - 如何使用SQL计算表中的唯一记录并获取这些唯一记录的数量?

java - 为客户的订单创建唯一但已订购的订单号

python - 类型错误 : 'instancemethod' object is not iterable (Content Spinner)

python - Python 中的 TypeError - Beautiful Soup

python - 在 Python 中检查绝对路径

python - 在 Python 中从列表中删除元素的简单方法

python - 赋值运算符左侧/右侧的不同切片行为