2017-11-19 17 views
0
num_row = 3 
num_col = [2, 4, 8] 

# columns, row 
list_2d = [[0 for i in range(num_row)] for j in num_col] 
#list_2d = [[0 for i in range(num_row)] for j in num_col[:]] # SyntaxError: invalid syntax 
#list_2d = [[0 for i in range(num_row)] for num_col[:]] #SyntaxError: invalid syntax 
#list_2d = [[0 for i in range(num_row)] for j in num_col[j]] #IndexError: list index out of range 


print('\nlist_2d:') 
for i in list_2d: 
    print(i) 

print('\nnum_col:') 
for j in num_col[:]: 
    print(j) 

私の目標は、配列によって行要素の数が提供されるリストの宣言/初期化です(つまり、配列の最初の要素は第1行の列の数、配列の第2要素は第2行の列の数などを与える)。私の人生のために、私はこれを達成する方法を理解することができません。リストから等しくない行/列長さを持つ2Dリスト

list_2d: 
[0, 0, 0] 
[0, 0, 0] 
[0, 0, 0] 


num_col: 
2 
4 
8 

私が欲しいもの:

[0, 0] 
[0, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0, 0] 

答えて

0
[[0 for i in range(j)] for j in num_col] 

num_rowは常に3となります、あなたはj代わり

0

もう一つの方法は、になりますを使用したい私は何を得る

*を使用してください。次のようにここで同じことを適用する例

>>> [0]*10 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

だ、あなたもこれを行うことができます:

num_col = [2,4,8] 
result = [[0]*j for j in num_col] 
関連する問題