Python:使用列表理解的非均匀阵列

问题描述:

我想使用具有可变大小的子阵列的列表理解来初始化二维数组。数组中的所有值都应该是随机的。Python:使用列表理解的非均匀阵列

请参阅下面的示例 - 请注意dim中的每个数字都指的是子数组的长度。

dim = [1,3,1] -> this would make the array: 
[[.143], 
[.534], [.732], [.741], 
[.989]] 

到目前为止,我已经试过如下:

arr = [[random.random() for b in range(b)] for a in range(len(dim))]] 

但是我recieving错误NameError: name 'b' is not defined。我错过了一些容易吗?我显然可以使用使用列表追加和常规for循环,但我觉得这样做有更多的python-y方法!

+0

'对于B范围内(B)'你有什么期望呢?你是不是指'范围(a)'? – njzk2

+1

另外,'对于一个范围(len(nnDim))'没有做你想做的事情(不管nnDim是什么)。你可能简单地想''为一个昏暗的' – njzk2

+0

最后给'a'一个重要的名字,用'_代替'b'来表明这个变量没有被使用:'[[random.random()for _在范围(大小)]为暗淡大小'' – njzk2

这是一个很简单的问题 - 正确的语法是:

arr = [[random.random() for b in range(dim[a])] for a in range(len(dim))]