2016-04-01 7 views
0
with open('index.txt','r') as f: 

    a = [int(x) for x in f.readline().split()] 
    array = [] 
    for line in f: 
     array.append([int(x) for x in line.split()]) 

print array[0] 
print array[1] 
print array[2] 
print array[3] 
print array[4] 

入力ファイル私のコードが最初の行を読んでいないのはなぜですか?

0 
0 
100 
200 
1 
101 
201 
2 
102 
202 
3 
103 

私は自分のコード

[0] 
[100] 
[200] 
[1] 
[101] 

ただ、二0が表示されますを実行します。

+0

@idjaw 0,0,100,200ので –

答えて

5

問題は、この行です:

a = [int(x) for x in f.readline().split()] 
これは、ファイルイテレータの最初の行を排出さ

ので、あなたは残りのラインを介して、ループ、すでに最初の1を消費してきたとき。

問題を修正するには、このコード行を削除するか、必要に応じてファイルの内容のリストを生成し(f.readlines())、リストを反復処理するか、その行の後にファイルの先頭に移動します(f.seek(0)) 。ファイルが特に大きければ、ファイル全体をメモリに持ち込むので、f.readlines()は避けるべきです。

+0

にはい、readlinesでperfct動作しますが。 –

0

このファイルには、はるかに簡単に解決策を提供するかもしれないnumpyの整数のリスト単にである場合:

import numpy 
array = numpy.loadtxt('index.txt', dtype=int) 
関連する問題