You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌套列表生成二元元组?附具体需求示例

解决方法:提取路径列表中的相邻元素二元组

嗨,这个需求用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:29:46