通过这些方法在 python 中初始化数组的区别

Diferrence in inititializing array in python by these methods

我用两种方法声明了一个array of array:

方法一: bucket = [[]] * 6)

方法二: bucket = [[] for i in range(6)]

但是在将元素附加到内部数组时,它的工作方式不同。

bucket[0].append(1)
print(bucket)

结果是这样的:

使用方法一时:

Output: 
[[1], [1], [1], [1], [1], [1], [1]]

使用方法 2 时:

Output: 
[[1], [], [], [], [], [], []]

我想了解为什么这会给我两种不同类型的结果。

事情是这样的:

  • 当你这样做时bucket = [[]]*(len(nums)+1)所有嵌套列表
    都一样。
  • 确认您可以print(id(bucket[0]))
    print(id(bucket[1])).
  • 两者都将打印相同的内存地址,因为它们都相同。所以,当你 将值附加到它为所有打印的任何嵌套列表 嵌套列表,因为它是同一个列表对象。