2016-12-08 9 views
0

私はPythonで非常に簡単なことをするコードを書こうとしています: 私は10 000行のファイルを持っています、各行には12から16までの数字が入っています。配列の大きさの配列へのデータ(table10000 * 16)ので、私は少し機能書きました:問題があるdouble配列のpythonを管理する

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 

: (行[i]を文字列として、私のファイルのi番目のラインであるPS)を私の二重配列テーブルのセル(k、j)にデータの値を入れるのではなく、pythonは[0,10 000]のnのすべてのセル(n、j)にデータの値を入れます。私は彼にそれをするように言いました。

ありがとうございます。

答えて

0

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

それは参照の配列を作成します。だからこれを試してください:

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

問題はここにあります:self.table=[[0]*16]*len(self.line) Pythonはこの[0]*16配列をコピーせず、その参照をコピーします。次に、同じサブ配列への参照が多い配列があります。例:あなたがそうのようなあなたのテーブルを初期化すると

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

ありがとうございます! –

関連する問題