在python中,如果2D列表由'For loop'生成而不是由元素乘法生成,则替换为single elment
假设我想要一个所有零都为5x3(行x列)的列表。我可以用两种方式列出清单在python中,如果2D列表由'For loop'生成而不是由元素乘法生成,则替换为single elment,python,arrays,list,Python,Arrays,List,假设我想要一个所有零都为5x3(行x列)的列表。我可以用两种方式列出清单 使用for循环: 使用我最近学的元素乘法方法 现在两个都生成了相同的2D列表,如下所示 [0, 0, 0] [0, 0, 0] [0, 0, 0] [0, 0, 0] [0, 0, 0] 现在我想用11替换第一行第三列中的一个元素,所以我使用了下面的行 a[0][2]=11 根据所使用的技术,这将给出两种不同的结果。 第一种技术给出: [0, 0, 11] [0, 0, 0] [0, 0, 0] [0, 0, 0] [0
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
现在我想用11替换第一行第三列中的一个元素,所以我使用了下面的行
a[0][2]=11
根据所使用的技术,这将给出两种不同的结果。
第一种技术给出:
[0, 0, 11]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
第二种技术给出:
[0, 0, 11]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
[0, 0, 11]
第二个结果显然是不可取的,因为这不是我想要做的。
有人能解释为什么在第二种情况下结果会不同,以及这是一个bug还是一个特性吗
如果这是一个功能,那么在什么情况下可以实现第二种方法呢?
a=[[0表示范围内(3)]表示范围内(5)]
是避免浅拷贝的最简洁的方法,但请参见上面的链接了解更多详细信息谢谢,这很有帮助