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
中元组中的所有值好的,失败的代码是什么?这是否回答了您的问题?