请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于self._values = [row[:] for row in list2d]语句中row[:]的问题

bobo老师您好:

请问 row[:] 这里如果直接用 row 会造成一些 edge cases 的 failure 吗,还是说只是一种个人书写习惯或者是Python的一种建议写法?

我尝试了在 list2d 中写了不同的 iterable,比如 元组、range、列表, row 和 row[:] 都是成功的,

甚至如果我们想再包容一些,可以直接写 [list(row) for row in list2d],这样就算是 pass in 集合也是可以 run 的。

可能是一个较真的问题,在此先感谢您的回答和时间!

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2025-10-16 03:03:45

简单来说,[row for row in list2d] 是浅拷贝。如果 list2d 发生了改变,_values 也会发生改变。


[list(row) for row in list2d] 是套了一层可得浅拷贝。


[row[:] for row in list2d] 不是严格意义的深拷贝,但是如果 row 里是数字,就可以当做深拷贝看待。


如果你是计算机专业的,应该能理解这里的区别。如果你不是计算机专业的或者不理解我这里说的是什么意思,你可以再回复我一下,我给你一个简单的例子说明。


继续加油!:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号