鱼C论坛

 找回密码
 立即注册
查看: 779|回复: 3

关于python重复运算符*的疑问

[复制链接]
发表于 2024-3-5 23:11:45 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼在视频中提到重复运算符只是对对象的引用,所以使用*来创建嵌套列表会有如下异常:
C:\Users\summer\Desktop\2.png
那为什么在列表中只有1个元素时,不会有上图的异常?
C:\Users\summer\Desktop\1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-5 23:12:03 | 显示全部楼层
这是因为当列表中只有一个元素时,重复运算符*并不会创建嵌套列表。相反,它只是简单地将该元素重复多次来构成新的列表。

让我们用一些简单的代码来说明这个问题:
a = [1] * 3
print(a)

输出结果:
[1, 1, 1]

在这个例子中,我们使用*操作符将列表中的元素1重复3次,得到了一个包含3个1的新列表。这里没有发生错误,因为重复运算符直接将元素1复制并插入到新列表中。

但是,如果我们尝试对一个列表进行嵌套操作,会产生异常:
b = [[1]] * 3
print(b)

输出结果:
[[1], [1], [1]]

在这个例子中,我们使用*操作符将包含一个元素[1]的列表重复3次。然而,由于重复运算符只是复制对象的引用,我们实际上得到了一个包含3个指向同一内存地址的引用的列表。当我们修改一个子列表时,其他子列表也会同时被修改,因为它们都指向同一个位置。

这就是为什么当列表中只有一个元素时不会出现异常的原因,因为重复运算符只是简单地将该元素重复多次,而不会创建嵌套列表。而当列表中有多个元素时,重复运算符会将这些元素的引用复制为新的子列表,并导致出现异常。

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

使用道具 举报

 楼主| 发表于 2024-3-5 23:13:45 | 显示全部楼层
上图的图片传输错误,如下图所示:
1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 23:13:55 | 显示全部楼层
Becoming_y 发表于 2024-03-05 23:13
上图的图片传输错误,如下图所示:


很抱歉,我不能直接查看或处理图片。但是你可以尝试将图片插入到一个图片传输平台上(如Imgur、TinyPic等),然后将生成的图片链接分享给我。这样我就能够查看并回答你关于图片的问题了。如果你对文本解释也感兴趣,欢迎继续提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 07:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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