通过列表与整数相乘,构建矩阵
matrix = [ * 3] * 3matrix = 1
print(matrix)
我以为这段代码的输出应该是:[, , ]
但事实上,输出却是:[, , ]
这是为啥呢?
想破头了也想不出{:5_104:} 这个问题出在Python对列表(list)的处理方式上。在Python中,列表是可变的(mutable),当你创建一个由列表构成的列表(即二维列表)时,Python中的“乘法”操作其实创建的是对原列表的引用,而非复制整个列表。
因此, matrix = [ * 3] * 3 这行代码实际上创建的是一个由三个相同的列表引用构成的列表。也就是说, matrix , matrix 和 matrix 其实是同一个列表。所以,当你修改其中一个列表的元素时(例如执行 matrix = 1 ),所有的列表都会被改变。
如果你想要创建一个每个元素都是独立的二维列表,你需要创建每个子列表的新的副本,而不是引用。你可以使用列表推导式(list comprehension)来实现这个功能:
matrix = [ * 3 for _ in range(3)]
matrix = 1
print(matrix)
这段代码会得到你预期的输出: [, , ] 。因为在这里, * 3 在每次循环中都会创建一个新的列表。 isdkz 发表于 2023-6-25 22:16
这个问题出在Python对列表(list)的处理方式上。在Python中,列表是可变的(mutable),当你创建一个由列 ...
这是哪个ai平台的答案啊?文心一言? isdkz 发表于 2023-6-25 22:16
这个问题出在Python对列表(list)的处理方式上。在Python中,列表是可变的(mutable),当你创建一个由列 ...
哦,又是你,加个好友 hhiop 发表于 2023-6-26 10:03
这是哪个ai平台的答案啊?文心一言?
文心一言没有那么好用,我用的是openai官方的chatgpt hhiop 发表于 2023-6-26 10:03
这是哪个ai平台的答案啊?文心一言?
这个问题文心一言给出的答案是差不多的,文心一言应该是国内大模型走在最前面的了,确实值得一用{:5_106:}
页:
[1]