管理双阵列python

时间:2016-12-08 10:28:55

标签: python multidimensional-array

我正在尝试使用python编写一个非常简单的代码: 我有一个10 000行的文件,每行包含12到16个数字,我想将所有这些数据放入一个大数组(table10000 * 16),所以我写了一个小函数: (PS:line [i]是我文件的第i行,作为字符串)

def tabl(self):        
    self.table=[[0]*16]*len(self.line)
    for k,vertex in enumerate(self.line) :
        try:
            inf=[float(i) for i in vertex.split(" ")]
        except:
            pass
        for j,data in enumerate(inf):
            self.table[k][j]=data

问题在于,不是将数据的值放在我的双数组表的单元格(k,j)中,而是将数据的值放在[0,10 000]中的n的所有单元格(n,j)中] ......我不明白我告诉他这样做的地方。

谢谢。

2 个答案:

答案 0 :(得分:0)

问题在于:self.table=[[0]*16]*len(self.line) Python不会复制此[0]*16数组,而是复制对它的引用。然后,您有一个包含对同一子阵列的许多引用的数组。例如:

>>> a = [[]] * 2
>>> a[0] is a[1]
True
>>> 

答案 1 :(得分:0)

初始化表格时如下:

table=[[0]*16]*len(self.line)

它创建了一个引用数组。所以试试这个:

self.table = [[ 0 for _ in range(16)] for _ in range(len(self.line))]