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

Python中遍历列表遇NoneType报错:'NoneType' object is not iterable 求助

解决列表复制时处理None值的报错问题

你这段代码的核心问题是判断时机错误:当传入的items为None时,你在列表推导里写的if items is not None是遍历后的筛选条件,但此时已经在尝试遍历None(非可迭代对象),直接触发报错,判断逻辑根本没起到作用。

修正方案

  1. 提前判断items是否为None,若是则用空列表替代,再执行展开操作
  2. 修正类型注解:因为参数可能是None,需要用Optional[List[str]](需从typing导入Optional)

修正后的代码

from typing import List, Optional

fruits = ["lemon", "pear", "watermelon", "tomato"]
food = None

def check(items: Optional[List[str]]):
    # 先处理None的情况,替换为空列表
    target_items = items if items is not None else []
    c = ["apple", "banana", *target_items]
    print(*c)

check(fruits)
check(food)

运行结果

  • 调用check(fruits)输出:apple banana lemon pear watermelon tomato
  • 调用check(food)输出:apple banana

你也可以用更简洁的写法,把判断直接嵌入展开式:

def check(items: Optional[List[str]]):
    c = ["apple", "banana", *(items if items is not None else [])]
    print(*c)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:25:03