2016-03-28 28 views
0

我希望生成固定大小n = 5如何生成一個特定元素爲1,其餘爲0的列表?

條件m = 10列表: 我有長度m

z = [0, 4, 3, 2, 4, 1, 3, 2, 1, 0]

上面列表包含應爲1的元素的指數列表z。 該程序應該生成

[1,0,0,0,0] # element at index 0 is 1, rest are 0 as dictated by condition list z 
[0,0,0,0,1] # element at index 4 is 1, rest are 0 
[0,0,0,1,0] # element at index 3 is 1, rest are 0 
[0,0,1,0,0] # element at index 2 is 1, rest are 0 
. 
. 

回答

3
output = [[1 if i == j else 0 for i in xrange(n)] for j in z] 

此列表理解將創建一個數組與您尋求的模式。你如何選擇扁平化這個列表取決於你。

或者,您可以將其封裝在一個生成器中,並在您遍歷它時生成每個單獨的數組。它需要一個簡單的變化:

output = ([1 if i == j else 0 for i in xrange(n)] for j in z) 

,然後就可以通過簡單的數組迭代如下:

for array in output: 
    # do something 
0

你可以這樣做:

>>> z = [0, 4, 3, 2, 4, 1, 3, 2, 1, 0] 

>>> for i in z: 
...  x = [0] * 5 
...  x[i] = 1 
...  print(x) 
... 
[1, 0, 0, 0, 0] 
[0, 0, 0, 0, 1] 
[0, 0, 0, 1, 0] 
[0, 0, 1, 0, 0] 
[0, 0, 0, 0, 1] 
[0, 1, 0, 0, 0] 
[0, 0, 0, 1, 0] 
[0, 0, 1, 0, 0] 
[0, 1, 0, 0, 0] 
[1, 0, 0, 0, 0] 
相關問題