Python列表推导式执行后返回None结果,求排查解决方法
问题原因及解决方法
你的列表推导式得到一堆None,核心原因是**list.append()方法没有返回值(返回None)**。
当你写numbers = [numbers.append(i) for i in range(50)]时,推导式的每个元素都是append方法的返回结果,也就是None;同时这个推导式还会把0-49逐个添加到你最初初始化的空numbers列表里,但这完全偏离了列表推导式的正确用法。
正确的列表推导式写法
直接生成目标列表即可,不需要借助append:
numbers = [i for i in range(50)] print(numbers)
这样就能得到[0, 1, 2, ..., 49]的结果,和你原来的循环逻辑一致,而且更简洁。
对比原循环逻辑
你原来的循环是先初始化空列表,再逐个添加元素:
numbers = [] for i in range(20): numbers.append(i)
而列表推导式的本质就是把这种“初始化+循环添加”的逻辑简化为一行直接生成列表的代码,不需要额外调用append。
内容的提问来源于stack exchange,提问作者manntala
相关产品推荐
相关产品推荐

