Python 给定存在某些字符的元组的返回置换

Python 给定存在某些字符的元组的返回置换,python,Python,我有以下代码: from itertools import permutations lizt = [(1,2,3), (1,3,4), (6,5,3), (2,5,3), (1,6,2), (4,1,6)] lizt = list(permutations(lizt, 3)) for i in lizt: print(i) print(' ') 但我只想打印出可能的排列,如果数字1-6存在于三个元组中的某个位置 例如,我想要这个: ((1, 6, 2), (2, 5,

我有以下代码:

from itertools import permutations

lizt = [(1,2,3), (1,3,4), (6,5,3), (2,5,3), (1,6,2), (4,1,6)]

lizt = list(permutations(lizt, 3))

for i in lizt:
    print(i)
    print(' ')
但我只想打印出可能的排列,如果数字1-6存在于三个元组中的某个位置

例如,我想要这个:

((1, 6, 2), (2, 5, 3), (4, 1, 6))
((1, 2, 3), (1, 3, 4), (1, 6, 2))
B因为里面有所有的数字,但我不想要这个:

((1, 6, 2), (2, 5, 3), (4, 1, 6))
((1, 2, 3), (1, 3, 4), (1, 6, 2))

因为它缺了5个。如何执行此操作?

您可以通过构建列表包含的所有值的
集来筛选列表,并检查该集的长度是否为6:

from itertools import permutations, chain

lizt = [(1,2,3), (1,3,4), (6,5,3), (2,5,3), (1,6,2), (4,1,6)]
valid = [perm for perm in permutations(lizt, 3) if len(set(chain.from_iterable(perm))) == 6]

for i in valid:
    print(i)
输出:

((1, 2, 3), (1, 3, 4), (6, 5, 3))
((1, 2, 3), (6, 5, 3), (1, 3, 4))
((1, 2, 3), (6, 5, 3), (4, 1, 6))
((1, 2, 3), (2, 5, 3), (4, 1, 6))
((1, 2, 3), (4, 1, 6), (6, 5, 3))
((1, 2, 3), (4, 1, 6), (2, 5, 3))
((1, 3, 4), (1, 2, 3), (6, 5, 3))
((1, 3, 4), (6, 5, 3), (1, 2, 3))
((1, 3, 4), (6, 5, 3), (2, 5, 3))
... and so on

chain.from_iterable(perm)
生成
perm

中元组中的所有值好的,失败的代码是什么?这是否回答了您的问题?