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

为什么这段Python代码生成的列表所有元素取值都完全相同?

问题根因

问题出在list = [[None]]*n这行代码的执行逻辑:

  • Python 中使用*对列表做乘法复制时,只会复制列表内元素的引用,不会生成新的独立对象。这行代码执行后,外层列表的n个元素实际上是同一个[None]列表对象的引用,所有子列表本质上是同一个内存地址的内容。
  • 后续循环中每次修改i[0],都是在修改同一个子列表的第一个元素,最后一次赋值的随机数自然会同步出现在所有子列表的对应位置,看起来就是所有条目值都相同。

修正方案

需要在生成外层列表时,每次都创建独立的子列表,避免引用重复,同时建议不要用list作为变量名,会覆盖Python内置的list类型:

import random
n = 5
# 推导式每次生成新的[None]子列表,互相独立
my_list = [[None] for _ in range(n)]
for i in my_list:
    i[0] = random.uniform(0, 1)

print(my_list)

内容的提问来源于stack exchange,提问作者Carla only proves trivial prop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:02