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

Lambda函数返回全None列表的原因排查及生成数字列表问询

问题原因
  • list.append(x) 这个方法只会把元素添加到列表中,本身没有返回值(实际返回None)。
  • 你写的列表推导式[my_lis.append(x) for x in range(m)],本质是把每一次append调用的返回值收集起来,所以最终得到的就是全None的列表。
  • 就算改成打印x,print(x)同样返回None,推导式还是会生成全None的列表,只是循环过程中额外打印了数字而已。
正确实现方法

如果你想生成数字列表,根本不需要额外维护my_lis变量,直接用lambda返回range转换的列表就行:

l = lambda m: list(range(m))
print(l(10))  # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

要是非得用append的逻辑(完全没必要,可读性差),可以这么写:

# 更清晰的普通函数写法(推荐)
def gen_list(m):
    my_lis = []
    for x in range(m):
        my_lis.append(x)
    return my_lis
print(gen_list(10))

# 硬要套lambda的写法(不推荐,太绕)
l = lambda m: (temp := [], [temp.append(x) for x in range(m)], temp)[2]
print(l(10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:10:25