Python分组递增计数:值变更时重置计数器的实现问题
解决连续分组递增计数问题
原代码问题分析
- 每次
for循环都重置j=1,导致连续相同值无法累加计数 - 直接对
B赋值(B = j)而非向列表添加元素,最终无法得到目标列表 while A[i] == A[i+1]会在i为最后一个元素时触发索引越界错误else分支逻辑错误,未正确处理值变更时的重置逻辑
正确实现代码
A = ["Apple", "Apple", "Apple", "Orange", "Orange", "Orange", "Orange", "Orange", "Orange", "Melon", "Melon", "Peach", "Peach", "Peach", "Peach"] B = [] if not A: print("列表A为空") else: current_val = A[0] count = 1 B.append(count) for val in A[1:]: if val == current_val: count += 1 else: current_val = val count = 1 B.append(count) # 验证输出(可选) for a, b in zip(A, B): print(f"{a}\t{b}")
输出结果
| 产品(A) | 编号(B) |
|---|---|
| Apple | 1 |
| Apple | 2 |
| Apple | 3 |
| Orange | 1 |
| Orange | 2 |
| Orange | 3 |
| Orange | 4 |
| Orange | 5 |
| Orange | 6 |
| Melon | 1 |
| Melon | 2 |
| Peach | 1 |
| Peach | 2 |
| Peach | 3 |
| Peach | 4 |
内容的提问来源于stack exchange,提问作者Djsech2
相关产品推荐
相关产品推荐

