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

Python列表推导式生成二维数组修改元素不符合预期的原因是什么

问题根源

该问题由Python中可变对象的引用传递特性导致,具体原因如下:

  • 你提前定义的info = [0,0]是可变的列表对象,后续的列表推导式[[info for col in range(n+1)] for row in range(n+1)]并没有生成新的独立子列表,只是将同一个info对象的引用重复填充到了二维数组的所有位置
  • 当你执行map[1][1][0] = 1时,实际修改的是唯一的info对象本身,所有引用该对象的数组位置都会同步更新数值,因此不会只修改map[1][1]一处,最终结果不符合预期
  • 额外提示:不要用print、map作为变量/函数名,二者都是Python内置函数,覆盖后会影响内置功能的正常使用
修复方案

调整列表推导式写法,每次循环生成新的独立子列表即可:

n = 5 # 需提前定义n的取值
def custom_print():
    my_map = [[[0,0] for col in range(n+1)] for row in range(n+1)]
    my_map[1][1][0] = 1 
    print(my_map[1][1]) # 输出 [1, 0],符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:54:01