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

如何按顺序筛选Python列表正数?解决输出顺序颠倒问题

问题分析与解决

你的代码出现顺序颠倒的核心原因是遍历方式错误:你在for i in list中把i当成了列表的索引,但实际上i是列表中的元素本身。当i是负数时,Python会从列表末尾反向索引,导致你先取到了列表末尾的正数,最终顺序颠倒。

比如原列表[-1,-2,-3,-4,0,1,2,3],循环时i依次是-1、-2、-3、-4:

  • list[-1]取的是列表最后一个元素3,满足>=0,被添加到flist
  • list[-2]取的是倒数第二个元素2,被添加
  • list[-3]取的是1,被添加
  • list[-4]取的是0,被添加
    而后续i为0、1、2、3时,list[i]对应的是原列表前几个负数(list[0]是-1,list[1]是-2等),不满足条件,所以不会被添加,最终得到[3,2,1,0]。

修正后的代码

def filter_positive(lst):
    flist = []
    for num in lst:
        if num >= 0:
            flist.append(num)
    return flist

lst = [-1,-2,-3,-4,0,1,2,3]
print(filter_positive(lst))

关键修正点

  • 直接遍历列表元素num,而非错误地将元素当作索引使用
  • 避免使用list作为变量名(这会覆盖Python内置的list类型)
  • 省略多余的else: continue,不满足条件时自然会跳过循环

运行修正后的代码,输出就是你期望的[0,1,2,3]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:20:44