如何从嵌套列表生成二元元组?附具体需求示例
解决方法:提取路径列表中的相邻元素二元组
嗨,这个需求用Python实现起来很简单,我给你几种不同的思路,你可以根据自己的习惯选择:
方法一:直观的嵌套循环(适合新手理解)
这种方式逻辑直白,一步步遍历每个路径,再逐个提取相邻元素对:
paths = [['s', 'a', 'b', 't'], ['s', 'c', 'd', 't'], ['s', 'c', 'e']] result = [] for path in paths: # 遍历到倒数第二个元素,确保能取到i+1的位置 for i in range(len(path) - 1): result.append( (path[i], path[i+1]) ) print(result)
方法二:用zip函数简化代码(更高效简洁)
Python的zip函数天生适合处理这种相邻元素配对的场景,配合extend可以快速生成结果:
paths = [['s', 'a', 'b', 't'], ['s', 'c', 'd', 't'], ['s', 'c', 'e']] result = [] for path in paths: # zip(path, path[1:]) 会自动把相邻元素组合成元组 result.extend(zip(path, path[1:])) print(result)
解释:path[1:]是原路径从第二个元素开始的切片,zip会将原路径和切片的对应元素一一配对,生成你需要的二元元组。extend能直接把这些元组批量添加到结果列表中,比逐个append更高效。
方法三:一行式列表推导式(极简风格)
如果喜欢紧凑的代码,可以用嵌套的列表推导式直接生成结果:
paths = [['s', 'a', 'b', 't'], ['s', 'c', 'd', 't'], ['s', 'c', 'e']] result = [pair for path in paths for pair in zip(path, path[1:])] print(result)
最终输出
不管用哪种方法,运行后都会得到你期望的结果:
[('s', 'a'), ('a', 'b'), ('b', 't'), ('s', 'c'), ('c', 'd'), ('d', 't'), ('s', 'c'), ('c', 'e')]
内容的提问来源于stack exchange,提问作者Thanos Bolatoglou
相关产品推荐
相关产品推荐

