因为我不知道确切的尺寸,所以在python中初始化2D列表

时间:2014-05-23 06:22:38

标签: python list

我想创建一个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 ...

1 个答案:

答案 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]