鱼C论坛

 找回密码
 立即注册
查看: 96|回复: 2

[已解决]创建入门三维列表里的一个问题

[复制链接]
发表于 2024-11-14 18:57:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图
请问为什么如图1这样子创建的时候,出现图2显示的错误是什么意思呢
我知道正确创建方式是图三,但是我想请教为什么像图1一样创建是错在哪里了呢
最佳答案
2024-11-14 20:59:13
z = [0] * 3
for i in range(3):
    for j in range(2):
        z[i][j] = [0] * 2      # 错误,因为此刻的 z 还只是一个一维列表,无法按二维方式进行读写。

图1

图1

图2

图2

图3

图3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-14 18:57:56 | 显示全部楼层
虽然没有图,但是我可以根据您的描述猜测问题。

**问题原因:**
如果您是通过类似`list = [[0] * cols] * rows`来创建二维列表,会导致每一行都引用相同的子列表对象。这意味着改变一个元素会影响所有行,因为它们实际上是同一个列表的不同引用。

**错误现象:**
因此,当您尝试在这样的二维列表中修改某个特定位置的值时,会发现其他位置的值也被不当修改,这就是您所指的错误。

**正确方法:**
您提到的图三应该是通过嵌套列表解析或者循环,比如:
list = [[0 for _ in range(cols)] for _ in range(rows)]
这种方法创建的每一行都是独立的列表对象,修改一个位置的值不会影响其他行。

希望这能够解答您的疑问!如果还有具体错误信息,您可以分享更详细的信息供我帮助分析。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-14 20:59:13 | 显示全部楼层    本楼为最佳答案   
z = [0] * 3
for i in range(3):
    for j in range(2):
        z[i][j] = [0] * 2      # 错误,因为此刻的 z 还只是一个一维列表,无法按二维方式进行读写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 00:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表