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

Python嵌套列表创建报错:使用lambda与map实现倍数列表遇NameError

嘿,刚入门Python遇到这种变量未定义的问题太正常啦,我来帮你搞定~

首先先说说你报错的原因:应该是你的lambda函数没有接收遍历的参数,导致里面引用的x找不到定义。比如如果你的代码大概是这样的:

# 错误示例
result = list(map(lambda: [x*i for i in range(x)], range(1,6)))

这里的lambda没有参数,x完全没被赋值,Python自然不知道它指的是什么,所以抛出NameError。

接下来是正确的实现方式,我们需要让lambda接收每个乘数(从1到5)作为参数,然后生成对应的子列表:

# 正确代码
target_list = list(map(lambda n: [n * i for i in range(n)], range(1, 6)))
print(target_list)

运行这段代码就能得到你想要的结果:

[[0], [0, 2], [0, 3, 6], [0, 4, 8, 12], [0, 5, 10, 15, 20]]

简单拆解下逻辑:

  • range(1,6)生成1到5的整数序列,作为map的遍历对象;
  • map会把每个整数传给lambda的参数n;
  • 对于每个n,range(n)生成0到n-1的整数(刚好有n个元素,完美匹配你“子列表元素个数等于对应乘数”的要求);
  • 用列表推导式生成[n*i for i in range(n)],也就是n分别乘以0、1、...、n-1的结果;
  • 最后用list()把map返回的迭代器转换成真正的列表,这样就能看到完整的嵌套结构啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:08:10