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

如何统计列表中元素的连续出现次数并输出指定格式结果?

统计列表元素连续出现次数的解决方案

需求概述

给定输入列表 ['user', 'user', 'sys', 'sys', 'user', 'user', 'sys', 'user'],需统计每个元素的连续出现次数,当元素类型变更时计数重置,最终输出格式为 [('user', 2), ('sys', 2), ('user', 2), ('sys', 1), ('user', 1)],用于分析用户与系统的操作模式。

实现方案

方法一:手动遍历统计

无需依赖额外库,通过遍历列表跟踪当前元素和计数,逻辑清晰易扩展:

def count_consecutive(items):
    # 处理空列表边界情况
    if not items:
        return []
    
    result = []
    current_item = items[0]
    count = 1
    
    for item in items[1:]:
        if item == current_item:
            count += 1
        else:
            # 元素变更时存入当前统计结果
            result.append((current_item, count))
            current_item = item
            count = 1
    # 添加最后一组元素的统计结果
    result.append((current_item, count))
    return result

# 测试示例
input_list = ['user', 'user', 'sys', 'sys', 'user', 'user', 'sys', 'user']
print(count_consecutive(input_list))
# 输出:[('user', 2), ('sys', 2), ('user', 2), ('sys', 1), ('user', 1)]

方法二:使用itertools.groupby

利用Python标准库的groupby工具,按连续相同元素分组,代码简洁高效:

from itertools import groupby

def count_consecutive(items):
    return [(key, len(list(group))) for key, group in groupby(items)]

# 测试示例
input_list = ['user', 'user', 'sys', 'sys', 'user', 'user', 'sys', 'user']
print(count_consecutive(input_list))
# 输出:[('user', 2), ('sys', 2), ('user', 2), ('sys', 1), ('user', 1)]

方案说明

  • 手动遍历方式适合理解底层逻辑,可灵活添加自定义统计规则;
  • itertools.groupby是内置高效工具,代码量少,适合快速实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:35:21