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

Python列表连续正数出现次数统计代码输出异常求助

问题排查与修复方案

首先,咱们来拆解下你的代码为什么输出不符合预期:

核心问题

你的代码存在两个关键漏洞:

  1. 最后一段连续正数的计数丢失:当循环遍历完count_list后,末尾的连续1序列(也就是最后5个1)后面没有遇到0,导致count里的数值(5)永远不会被添加到new_count_list中。
  2. 连续非正数会重复添加无效0:比如原数据里的-1,-2转换后是两个连续的0,每次遇到0都会把当前的count(此时为0)添加到列表,导致多出来一个不必要的0。

优化后的高效解决方案

咱们可以跳过先转换0/1列表的步骤,直接遍历原数据统计,这样代码更简洁高效,同时解决所有问题:

data = [0,4,5,2,-1,-2,5,1,5,3,5]
count = 0
continuous_pos_counts = []

for num in data:
    if num > 0:
        count += 1
    else:
        # 只有当之前有连续正数时,才把计数存入列表
        if count > 0:
            continuous_pos_counts.append(count)
            count = 0
# 循环结束后,检查是否还有未存入的连续正数计数
if count > 0:
    continuous_pos_counts.append(count)

# 可选:生成转换后的0/1列表用于验证
binary_converted = [1 if x>0 else 0 for x in data]
print("转换后的0/1列表:", binary_converted)
print("连续正数的次数列表:", continuous_pos_counts)

输出结果

运行后会得到符合预期的结果:

转换后的0/1列表: [0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
连续正数的次数列表: [3, 5]

原代码的快速修复(如果坚持保留0/1转换步骤)

如果你不想改动核心逻辑,只是修复原代码的问题,可以在第二个循环结束后补充添加剩余计数,同时优化遇到0时的判断逻辑:

data = [0,4,5,2,-1,-2,5,1,5,3,5]
count = 0
count_list = []
new_count_list = []
for i in data:
    if i > 0:
        count_list.append(1)
    elif i <= 0:
        count_list.append(0)
for number in count_list:
    if number == 0:
        # 避免连续0重复添加无效的0
        if count > 0:
            new_count_list.append(count)
            count = 0
    elif number == 1:
        count += 1
# 循环结束后添加最后一段的连续正数计数
if count > 0:
    new_count_list.append(count)
print(count_list)
print(new_count_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:48:36