我正在尝试使用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)中] ......我不明白我告诉他这样做的地方。
谢谢。
答案 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))]