Python中遍历列表遇NoneType报错:'NoneType' object is not iterable 求助
解决列表复制时处理None值的报错问题
你这段代码的核心问题是判断时机错误:当传入的items为None时,你在列表推导里写的if items is not None是遍历后的筛选条件,但此时已经在尝试遍历None(非可迭代对象),直接触发报错,判断逻辑根本没起到作用。
修正方案
- 提前判断
items是否为None,若是则用空列表替代,再执行展开操作 - 修正类型注解:因为参数可能是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
相关产品推荐
相关产品推荐

