0

複数行のコードを使用するプログラムを作成しています。現時点では、それぞれを個別に処理しています -> 各行が入ってくると、sys.stdin.readline() メソッドを介して次の行を要求する前に、それを削除して保存します。私のプログラムは現在遅すぎるため、効率を改善する方法があるかどうか疑問に思っていました。一度にすべての行を取得し (予想される行数はわかっています)、それらをリストに格納してから処理する方が高速ですか? もしそうなら、速度のために構築され、これを効率的に行うことができる組み込み関数はありますか?

ありがとう

4

2 に答える 2

1

一度にすべての行を読み取り、次のようにそれらを取り除いてリストに入れることで、少しスピードアップできます。

import sys
lines = sys.stdin.read().splitlines(False)
if lines:
    # process lines list....
于 2013-01-24T00:46:20.573 に答える
0

メソッドはreadlines()ファイルを読み取り、改行文字で区切られたリストに自動的に分割します。rstrip('\r\n')次に、メソッドをリストに繰り返し適用できます。または、改行文字 (通常は *nix の場合は '\n') がわかっている場合は、次のように read メソッドと split メソッドを連鎖させることができます.read().split('\n')

サンプルコード:

file_ob = open(path/to/file,'r')
# Method 1
file_list = file_obj.readlines()
for f in file_list
    clean = f.rstrip('\r\n')
    #do something with clean
# Method 2
clean_list = file_obj.read().split('\r')
# do something with clean_list
于 2013-01-23T23:25:05.357 に答える