poo*_*oop 17 python list-comprehension list python-2.7
在Python中,我想要一种直观的方法来创建一个三维列表.
我想要一个(n乘n)列表.因此,对于n = 4,它应该是:
x = [[[],[],[],[]],[[],[],[],[]],[[],[],[],[]],[[],[],[],[]]]
Run Code Online (Sandbox Code Playgroud)
我尝试过使用:
y = [n*[n*[]]]
y = [[[]]* n for i in range(n)]
Run Code Online (Sandbox Code Playgroud)
这两者似乎都在创建引用的副本.我也尝试过对列表生成器的天真应用,但收效甚微:
y = [[[]* n for i in range(n)]* n for i in range(n)]
y = [[[]* n for i in range(1)]* n for i in range(n)]
Run Code Online (Sandbox Code Playgroud)
我也尝试使用循环迭代地构建数组,但没有成功.我也试过这个:
y = []
for i in range(0,n):
y.append([[]*n for i in range(n)])
Run Code Online (Sandbox Code Playgroud)
这样做有更简单或更直观的方法吗?
Blc*_*ght 20
我认为你的列表理解版本非常接近工作.您不需要执行任何列表乘法(无论如何都不适用于空列表).这是一个工作版本:
>>> y = [[[] for i in range(n)] for i in range(n)]
>>> print y
[[[], [], [], []], [[], [], [], []], [[], [], [], []], [[], [], [], []]]
Run Code Online (Sandbox Code Playgroud)
小智 6
看起来最简单的方法如下:
def create_empty_array_of_shape(shape):
if shape: return [create_empty_array_of_shape(shape[1:]) for i in xrange(shape[0])]
Run Code Online (Sandbox Code Playgroud)
这对我有用
归档时间: |
|
查看次数: |
92082 次 |
最近记录: |