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

如何在Python中合并列表的相邻重复元素并获取新列表长度?

嘿,我来帮你搞定这个列表合并的问题!要把相邻的相同元素合并成单个,同时拿到新列表的长度,这里有两种实用的Python实现方式,你可以根据需求选择:

方法一:基础循环遍历(适合理解底层逻辑)

这种方法手动遍历原列表,逐个对比当前元素和结果列表的最后一个元素,不同就添加进去,逻辑清晰易懂:

nab = ['b', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'a', 'a']
# 先处理空列表的边界情况
if not nab:
    result = []
else:
    # 初始化结果列表,先放入第一个元素
    result = [nab[0]]
    # 从第二个元素开始遍历
    for item in nab[1:]:
        # 如果当前元素和结果最后一个元素不一样,就添加进去
        if item != result[-1]:
            result.append(item)

# 获取新列表的长度
new_length = len(result)

print(result)  # 输出: ['b', 'a', 'b', 'a']
print(new_length)  # 输出: 4

方法二:使用itertools.groupby(简洁高效版)

Python标准库的itertools.groupby可以自动把相邻的相同元素分组,我们只需要提取每组的键就能得到合并后的列表,代码非常简洁:

from itertools import groupby

nab = ['b', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'a', 'a']
# 推导式收集每个相邻相同组的键
result = [key for key, _ in groupby(nab)]
new_length = len(result)

print(result)  # 输出: ['b', 'a', 'b', 'a']
print(new_length)  # 输出: 4

小贴士:groupby只会合并相邻的相同元素,如果列表里有不相邻的相同元素(比如['b','a','b']),它们会被保留为独立元素,正好符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:46