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

如何在Python中简洁合并列表每三个(或更多)元素?

Python列表按指定数量合并元素的简洁实现

针对每3个元素合并的简洁写法

注意不要用list作为变量名(会覆盖内置类型),改用lst。可以用列表推导式+切片+字符串拼接一步实现需求:

lst = [1, 'one', 'first', 2, 'two', 'second', 3, 'three', 'third', 4, 'four', 'fourth', 5, 'five', 'fifth', 6, 'six', 'sixth']
result = [''.join(map(str, lst[i:i+3])) for i in range(0, len(lst), 3)]
print(result)
# 输出: ['1onefirst', '2twosecond', '3threethird', '4fourfourth', '5fivefifth', '6sixsixth']

代码逻辑说明:

  • range(0, len(lst), 3)生成步长为3的索引序列(0、3、6...),定位每组起始位置
  • lst[i:i+3]截取从索引i开始的3个元素作为一组
  • map(str, ...)把组内整数转成字符串,确保所有元素可参与字符串拼接
  • ''.join(...)把组内元素拼接成单个字符串,最终通过列表推导式生成结果列表

通用实现:按任意数量n合并元素

如果需要支持每n个元素合并(n为任意正整数),可以封装成通用函数,还能自定义合并规则:

def merge_elements(lst, group_size, merge_func=''.join):
    """
    按指定大小分组合并列表元素
    :param lst: 原列表
    :param group_size: 每组元素个数
    :param merge_func: 合并函数,默认是字符串拼接,可传入自定义函数
    :return: 合并后的新列表
    """
    return [merge_func(map(str, lst[i:i+group_size])) for i in range(0, len(lst), group_size)]

# 示例1:每3个元素拼接成字符串
lst = [1, 'one', 'first', 2, 'two', 'second', 3, 'three', 'third', 4, 'four', 'fourth', 5, 'five', 'fifth', 6, 'six', 'sixth']
result = merge_elements(lst, 3)
print(result)

# 示例2:每4个元素用逗号连接
result_comma = merge_elements(lst[:16], 4, merge_func=lambda x: ','.join(x))
print(result_comma)
# 输出: ['1,one,first,2', 'two,second,3,three', 'third,4,four,fourth', '5,five,fifth,6']

# 示例3:处理元素个数不是group_size整数倍的情况
short_lst = [1, 'a', 2, 'b', 3]
result_short = merge_elements(short_lst, 2)
print(result_short)
# 输出: ['1a', '2b', '3']

这个通用函数的灵活性在于:

  • 支持任意分组大小group_size
  • 可通过merge_func自定义合并逻辑,比如用逗号分隔、数字求和等
  • 自动处理列表长度不能被group_size整除的情况,最后一组保留剩余元素

内容的提问来源于stack exchange,提问作者Константин Прудников

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:55:22