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

Python中优雅合并列表元素对:剩余单元素并入前一对

如何优雅地将列表内元素两两合并(剩余单个并入前一对)?

问题描述

给定以下输入列表:

list_to_transform = [['Start', 'двигаться', 'конгресс', 'сша'], ['Start', 'двигаться', 'сторона', 'в'], ['Start', 'двигаться', 'сторона', 'признание', 'суверенитет', 'израильский'], ['Start', 'двигаться', 'сторона', 'признание', 'высот', 'на'], ['Start', 'двигаться', 'сторона', 'признание', 'высот', 'оккупировать'], ['Start', 'двигаться', 'сторона', 'признание', 'высот', 'Голанский'], ['Start', 'двигаться', 'сторона', 'признание', 'и']]

需要将每个子列表中的元素每两个合并为一个字符串;如果子列表元素个数为奇数,剩余的单个元素需要并入前一对合并后的字符串中,最终得到如下结果:

result =[['Start двигаться', 'конгресс сша'], ['Start двигаться', 'сторона в'], ['Start двигаться', 'сторона признание', 'суверенитет израильский'], ['Start двигаться', 'сторона признание', 'высот на'], ['Start двигаться', 'сторона признание', 'высот оккупировать'], ['Start двигаться', 'сторона признание', 'высот Голанский'], ['Start двигаться', 'сторона признание и']]

优雅实现方案

这里提供两种简洁的Python实现方式,核心思路都是先完成两两配对合并,再处理奇数长度的特殊情况:

方案1:利用切片与Zip配对(最简洁)

通过列表切片分离出偶数位和奇数位的元素,再用zip配对合并;最后判断子列表长度是否为奇数,若是则把最后一个元素追加到最后一个合并结果中:

def merge_pairs(sublist):
    # 两两配对合并:取第0、2、4...个元素和第1、3、5...个元素配对
    merged_pairs = [f"{a} {b}" for a, b in zip(sublist[::2], sublist[1::2])]
    # 处理奇数长度的情况:剩余单个元素并入最后一对
    if len(sublist) % 2 != 0:
        merged_pairs[-1] += f" {sublist[-1]}"
    return merged_pairs

# 应用到整个列表
result = [merge_pairs(lst) for lst in list_to_transform]

方案2:步长循环遍历

通过range设置步长为2遍历子列表,逐个处理元素对;遇到最后一个单个元素时,直接追加到前一个合并结果:

def merge_pairs(sublist):
    merged = []
    # 步长为2遍历,每次处理一对元素
    for i in range(0, len(sublist), 2):
        if i + 1 < len(sublist):
            merged.append(f"{sublist[i]} {sublist[i+1]}")
        else:
            # 剩余单个元素,合并到前一个结果
            merged[-1] = f"{merged[-1]} {sublist[i]}"
    return merged

result = [merge_pairs(lst) for lst in list_to_transform]

验证结果

运行上述代码后,得到的result完全符合你的需求。两种方案都很直观且高效,其中方案1的代码更简洁,利用Python的切片和zip特性,可读性也很强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:51