2016-03-28 3 views
0

は、私は、固定サイズn = 5特定の要素を1、残りを0としてリストを生成するにはどうすればよいですか?

条件のm = 10リストを生成したい: 私は

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

上記のリストは1であるべき要素のインデックスを含む長さmのリスト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] 
関連する問題