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

Python列表转换优化:替代循环实现批量累积值转换

用Pandas批量处理列表转换的方案

直接上代码和高效解决方案,替代循环遍历的方式:

import pandas as pd

# 示例原列表(可替换成你的实际列表)
original_list = [1, 1, 1, 2, 3, 1, 2, 1]
s = pd.Series(original_list)

# 生成分组标识:自动把连续递增的序列归为同一组
group_ids = (s != s.shift() + 1).cumsum()

# 定义分组处理逻辑
def process_group(group):
    # 匹配连续数字块规则:长度>1且起始元素为1
    if len(group) > 1 and group.iloc[0] == 1:
        # 首个元素设为组内最大值,其余元素置0
        return pd.Series([group.max()] + [0]*(len(group)-1), index=group.index)
    # 其他情况直接保留原数值
    else:
        return group

# 批量处理后转回列表
result = s.groupby(group_ids).apply(process_group).tolist()
print(result)  # 输出示例: [1, 1, 3, 0, 0, 2, 0, 1]

关键逻辑说明

  • 分组规则:通过shift()对比当前元素与前一个元素的关系,用cumsum()生成分组ID,自动将1,2,3这类连续递增序列划分为同一组,单独的1会各自成独立分组。
  • 批量处理:借助Pandas的分组apply方法,一次性处理所有分组,无需逐个遍历元素,处理大列表时效率远高于循环。
  • 规则匹配:仅对符合条件的分组(长度>1且以1开头)执行替换,其余情况保持原数据不变,完全贴合你提出的转换规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:53:15