2017-05-05 56 views
0

我想使用具有可變大小的子陣列的列表理解來初始化二維數組。數組中的所有值都應該是隨機的。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

回答

0

這是一個很簡單的問題 - 正確的語法是:

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