Joh*_*ooy 13
肯定有是办法
arr = eval(`[[0]*5]*10`)
Run Code Online (Sandbox Code Playgroud)
要么
arr = eval(("[[0]*5]+"*10)[:-1])
Run Code Online (Sandbox Code Playgroud)
但它太可怕了,浪费了,所以每个人都使用循环(通常是列表推理)或numpy
根据您的实际需求,事实上的"标准"包Numpy可能会为您提供您所需要的.
例如,您可以创建一个多维数组
numpy.empty((10, 4, 100)) # 3D array
Run Code Online (Sandbox Code Playgroud)
(使用任意值初始化)或创建具有零随处可见的相同数组
numpy.zeros((10, 4, 100))
Run Code Online (Sandbox Code Playgroud)
对于阵列操作,Numpy非常快.
当然,你可以做到
mylist = [
[1,2,3],
[4,5,6],
[7,8,9]
]
Run Code Online (Sandbox Code Playgroud)
我不相信这是可能的。
你可以这样做:
>>> a = [[0] * 5] * 5
Run Code Online (Sandbox Code Playgroud)
创建一个 5x5 矩阵,但它是重复的对象(这是你不想要的)。例如:
>>> a[1][2] = 1
[[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
您几乎肯定需要使用某种循环,如下所示:
[[0 for y in range(5)] for x in range(5)]
Run Code Online (Sandbox Code Playgroud)
以下内容不使用任何特殊的库,也不使用eval:
arr = [[0]*5 for x in range(6)]
Run Code Online (Sandbox Code Playgroud)
并且不会创建重复的引用:
>>> arr[1][1] = 2
>>> arr
[[0, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)