我想创建一个python 2D列表,但我不知道在编写程序时必须初始化列表的ecaxt维度。 例如,我想要一个像这样的列表
edgelist = [[3,5], [2,5], [4,6], ...]
内部列表将包含两个数字。但编码时不知道内部列表的数量。在通过循环初始化后将分配数字。
我的代码是:
edgelist = []
val = 0
for every_list in req_data:
for temp in range(1,len(every_list)):
edgelist[val].append(every_list[0])
edgelist[val].append(every_list[temp])
val = val+1
当val == 0
列表附加值时。但是下一次迭代它将错误显示为IndexError: list index out of range
...
答案 0 :(得分:3)
edgelist = []
这意味着edgelist
是一个空列表。因此,edgelist[0]
将无法获得任何结果。这就是它抛出错误的原因。你应该做的是
edgelist.append([every_list[0], every_list[temp]])
这将创建一个包含every_list[0]
和every_list[temp]
的双元素列表,并将该列表添加到edgelist
。因此,edgelist
成为列表或二维列表。
此外,如果req_data
已有两个元素列表,那么您只需执行
for every_list in req_data:
edgelist.append(every_list[:])
这将在req_data
中创建元素的副本,并将其直接添加到edgelist
。最好使用列表理解,比如这个
edgelist = [every_list[:] for every_list in req_data]