通过按值复制,在 Python 中创建一个没有 for 循环的重复元素的二维列表

By copy-by-value, create a 2-D list of duplicate elements without for-loops in Python

我要生成

[[0, 0, 0],
 [0, 0, 0],
 [0, 0, 0]]

,其中所有元素都是独立值,不通过引用相关。

虽然可以通过

来实现
P = []
for i in range(3):
    P.append([0] * 3)

仍然希望它可以在不使用任何 for 循环的情况下完成

我试过了P = [[-1] * 3] * 3。 然而,这三个[0, 0, 0]实际上指的是同一个对象。重新分配 P[0][0] = 1 导致

[[1, 0, 0],
 [1, 0, 0],
 [1, 0, 0]]

而不是想要的结果

[[1, 0, 0],
 [0, 0, 0],
 [0, 0, 0]]

那么,有没有什么方法可以在没有 for 循环的情况下以单行方式完成它?

这可以通过列表理解来完成:

P = [[0] * 3 for _ in range(3)]

我知道你 可能 并不是要排除在列表推导中使用 for 循环,但这是一个没有 for[ 这个词的答案=16=](因为...你可以?)

x = list(map(lambda p: [0]*3, [None]*3))

您可能需要查看 numpy

import numpy as np    
array = np.zeros((3,3), dtype=int)
array[0][0] = 1