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)
我的目标是声明/初始化列表列表,其中行元素的数量由数组提供(即,数组的第一个元素给出第一行中的列数,数组的第二个元素给出第二行中的列数等。对于我的生活,我无法弄清楚如何实现这一目标。
我得到了什么:
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)
[[0 for i in range(j)] for j in num_col]
num_row
将始终为3,您希望使用j
代替
答案 1 :(得分: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]