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

如何按规则合并两个Python列表?分组拼接元素需求

问题:合并两个Python列表为指定扁平结构

原始数据

现有两个Python列表:

sgrades_flat = ['Barrett', 'Edan', '70', '45', '59', 'Bradshaw', 'Reagan', '96', '97', '88', 'Charlton', 'Caius', '73', '94', '80', 'Mayo', 'Tyrese', '88', '61', '36', 'Stern', 'Brenda', '90', '86', '45']
s_grades = ['F', 'A', 'B', 'D', 'C']

预期目标

将两个列表合并为以下形式的扁平列表:

['Barrett', 'Edan', '70', '45', '59', 'F',
 'Bradshaw', 'Reagan', '96', '97', '88', 'A',
 'Charlton', 'Caius', '73', '94', '80', 'B',
 'Mayo', 'Tyrese', '88', '61', '36', 'D',
 'Stern', 'Brenda', '90', '86', '45', 'C']

原代码问题分析

你之前尝试的代码:

z=[]    
for i, x in zip(sgrades_flat[::5], s_grades):
  z.append(i+x)
print(z)

输出结果不符合预期,问题出在:

  • sgrades_flat[::5]仅提取了每组的第一个元素(如Barrett、Bradshaw),而非整组5个元素
  • i+x是字符串拼接操作,而非将列表元素追加到结果集合中

正确实现方法

方法1:切片分组+循环扩展

通过列表推导式将sgrades_flat按每5个元素分组,再与s_grades配对后合并:

result = []
# 按每5个元素切分原始列表,生成子列表组
groups = [sgrades_flat[i:i+5] for i in range(0, len(sgrades_flat), 5)]
# 遍历每组和对应等级,扩展到结果列表
for group, grade in zip(groups, s_grades):
    result.extend(group)
    result.append(grade)
print(result)

方法2:索引计算直接切片

通过索引计算直接定位每组的起始和结束位置,避免生成中间子列表:

result = []
for idx, grade in enumerate(s_grades):
    start = idx * 5
    end = start + 5
    # 追加当前组的所有元素和对应等级
    result += sgrades_flat[start:end]
    result.append(grade)
print(result)

方法3:使用itertools分组(适合大型列表)

借助itertools的分组工具处理,效率更高:

from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

result = []
for group, grade in zip(grouper(sgrades_flat, 5), s_grades):
    result.extend(group)
    result.append(grade)
print(result)

输出结果

以上三种方法均会输出符合预期的扁平列表:

['Barrett', 'Edan', '70', '45', '59', 'F', 'Bradshaw', 'Reagan', '96', '97', '88', 'A', 'Charlton', 'Caius', '73', '94', '80', 'B', 'Mayo', 'Tyrese', '88', '61', '36', 'D', 'Stern', 'Brenda', '90', '86', '45', 'C']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:30:41