Py学习  »  Python

Python:查找两个列表x和y之间配对的所有组合,以便y中的所有元素都与x中的一个元素正好配对

askingquestions • 5 年前 • 2120 次点击  

min(x,y) ^ max(x,y)

x = ['a', 'b', 'c']
y = [1, 2, 3]

combos = get_combos(x,y)
for combo in combos:
    print(combo)

…我想写 get_combos(x, y) 这样它会返回一个包含27个组合对的列表,打印时,这些组合对如下所示:

[('a', 1) ('a', 2) ('a', 3)]
[('a', 1) ('a', 2) ('b', 3)]
[('a', 1) ('a', 2) ('c', 3)]
[('a', 1) ('b', 2) ('a', 3)]
[('a', 1) ('b', 2) ('b', 3)]
[('a', 1) ('b', 2) ('c', 3)]
[('a', 1) ('c', 2) ('a', 3)]
[('a', 1) ('c', 2) ('b', 3)]
[('a', 1) ('c', 2) ('c', 3)]
[('b', 1) ('a', 2) ('a', 3)]
[('b', 1) ('a', 2) ('b', 3)]
[('b', 1) ('a', 2) ('c', 3)]
[('b', 1) ('b', 2) ('a', 3)]
[('b', 1) ('b', 2) ('b', 3)]
[('b', 1) ('b', 2) ('c', 3)]
[('b', 1) ('c', 2) ('a', 3)]
[('b', 1) ('c', 2) ('b', 3)]
[('b', 1) ('c', 2) ('c', 3)]
[('c', 1) ('a', 2) ('a', 3)]
[('c', 1) ('a', 2) ('b', 3)]
[('c', 1) ('a', 2) ('c', 3)]
[('c', 1) ('b', 2) ('a', 3)]
[('c', 1) ('b', 2) ('b', 3)]
[('c', 1) ('b', 2) ('c', 3)]
[('c', 1) ('c', 2) ('a', 3)]
[('c', 1) ('c', 2) ('b', 3)]
[('c', 1) ('c', 2) ('c', 3)]

我已经看过itertools.combinations、itertools.product和itertools.permutations,但它们似乎都没有给我确切的我要找的东西。itertools.permutations与 zip this answer ),但是结果列表是互斥的,因为两个列表中的任何元素都不能在单个组合中重复(例如。 [('a', 1), ('a', 2), ('c', 3)]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55308
 
2120 次点击  
文章 [ 4 ]  |  最新文章 5 年前