只是一个风格问题:是否有一种内置方法可以在交换属性的断言下获取组合并排除与自身配对的元素?
a = ["1", "2", "3"]
b = ["1", "2", "3"]
seen = []
combinations = []
for v1 in a:
for v2 in b:
if v1 != v2:
if (v2, v1) not in seen:
combinations.append((v1, v2))
seen.append((v1, v2))
>> [('1', '2'), ('1', '3'), ('2', '3')]
看起来不是很Python。我知道 itertools.product 是笛卡尔积。我可以将它转换为一个排除身份配对的集合,但它仍然是非交换产品。