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

如何遍历含列表的元组列表并按顺序分组元素(适配任意长度)

通用化处理元组列表生成连续元组

需求说明

给定格式为(前缀值, [任意长度子列表])的元组列表,需按以下规则生成连续元组:

  1. 前缀值与子列表第一个元素组成元组
  2. 子列表中相邻元素依次组成元组
  3. 收集所有生成的元组作为最终结果

输入示例:

lis = [(0, [75, 1, 30]), (1, [41, 49, 55]), (2, [28, 53, 45])]

预期输出:

[(0,75), (75, 1), (1, 30), (1, 41), (41,49), (49,55), (2,28), (28, 53), (53, 45)]

原有实现仅能处理子列表长度固定为3的情况,无法适配任意长度的子列表。

通用解法

利用zip()函数自动配对子列表的相邻元素,结合循环实现通用处理:

基础代码实现

# 示例输入
lis = [(0, [75, 1, 30]), (1, [41, 49, 55]), (2, [28, 53, 45])]
result = []

for prefix, sublist in lis:
    # 添加前缀与子列表首元素的元组
    result.append((prefix, sublist[0]))
    # zip(sublist, sublist[1:])自动配对子列表的相邻元素
    result.extend(zip(sublist, sublist[1:]))

print(result)

适配更长子列表的测试

对于输入:

test_lis = [(0, [82, 70, 79, 77, 42]), (1, [40, 61, 58, 66, 69]), (2, [80, 30, 12, 77, 9])]

执行上述代码后输出:

[(0, 82), (82, 70), (70, 79), (79, 77), (77, 42), (1, 40), (40, 61), (61, 58), (58, 66), (66, 69), (2, 80), (80, 30), (30, 12), (12, 77), (77, 9)]

空列表兼容处理

如果需要处理子列表为空的情况,可添加判断逻辑跳过无效项:

result = []
for prefix, sublist in lis:
    if not sublist:
        continue
    result.append((prefix, sublist[0]))
    result.extend(zip(sublist, sublist[1:]))

内容的提问来源于stack exchange,提问作者learner_from_scratch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:22:19