Python中如何生成元组列表的双元组展开排列结果?
解决方法
你需要的是从原列表中生成所有两个元组的有序排列,然后将每个排列里的两个元组拼接成一个四元素的扁平元组。之前用permutations(lis,4)是错误的,因为它会取出4个元组的排列,得到嵌套结构,而我们只需要2个元组的排列再展开。
具体实现代码
from itertools import permutations # 原元组列表 lis = [ (1, 7), (1, 2), (1, 4), (7, 1), (7, 2), (7, 4), (2, 1), (2, 7), (2, 4), (4, 1), (4, 7), (4, 2) ] # 生成所有两个元组的有序排列,再拼接成四元素元组 result = [t1 + t2 for t1, t2 in permutations(lis, 2)]
代码解释
permutations(lis, 2)会生成原列表中所有有序的两个元组组合(比如((1,7), (1,2))和((1,2), (1,7))会被视为两个不同的元素,完全符合你需要的排列要求)- 元组的
+操作会直接拼接两个元组,比如(1,7) + (1,2)会得到(1,7,1,2),刚好是你需要的四元素扁平元组 - 列表推导式会遍历所有排列组合,将每个组合拼接后收集成最终的结果列表
结果示例
生成的result列表开头会包含你提到的(1,7,1,2)、(1,2,1,4)等目标元组,且包含所有符合要求的排列展开结果。
内容的提问来源于stack exchange,提问作者Sushmita Singh
相关产品推荐
相关产品推荐

