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

Python/Numpy中分组值切换器实现需求

分组切换值映射解决方案

给定输入列表:

groups = ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D']

需要生成输出列表 [0,0,0,1,1,0,0,1],要求每次分组发生变化时,输出值在0和1之间切换,且实现逻辑不依赖分组数量及每组元素个数。

方法1:遍历对比法

这是最直观的实现方式,逐个遍历元素,对比当前分组与上一个分组,不同就切换输出值:

groups = ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D']
result = []
current_val = 0
# 处理空列表的边界情况
prev_group = groups[0] if groups else None

for group in groups:
    if group != prev_group:
        # 0变1,1变0
        current_val = 1 - current_val
        prev_group = group
    result.append(current_val)

print(result)  # 输出: [0, 0, 0, 1, 1, 0, 0, 1]

这个逻辑完全不限制分组数量和每组元素数,空列表也能正常处理。

方法2:用itertools.groupby批量处理

借助itertools.groupby先把相同分组的元素聚合,再为每个分组批量添加对应值,效率更高:

from itertools import groupby

groups = ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D']
result = []
current_val = 0

# groupby会把连续相同的元素归为一组
for _, group in groupby(groups):
    # 获取当前分组的元素个数,批量添加值
    result.extend([current_val] * len(list(group)))
    # 切换下一组的值
    current_val = 1 - current_val

print(result)  # 输出: [0, 0, 0, 1, 1, 0, 0, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:35:25