行ごとに 1 つの数字を持つ大きなソート済みファイルがあります。あるサイズの各範囲の数値の数を出力したい。たとえば、範囲を 10 にして、入力を次のようにします。
1
4
34
37
42
48
53
出力は になります[2, 1, 3, 2, 2, 2, 1]
。これは の長さです[1,4], [4], [34,37,42], [37,42], [42,48], [48,53], [53]
。私はこれを使用して解決できると思いますdeque
が、主にプログラミングの演習として、またメモリの使用量を減らすために、ファイルを 2 回開き、ファイルに 2 つの異なるポインターを持って解決しようとしています。1 つはリストの次の左端を読み取り、もう 1 つは新しい右端を読み取ります。だから私のコードは
fin1 = open(file, 'r')
fin2 = open(file, 'r')
fin1 をループすると思います。範囲が大きくなりすぎると、範囲が十分に小さくなるまで fin2 をさらに読み込み、fin1 と fin2 をステップダウンし続けます。
しかし、私はこれを機能させることができません。同じファイルに対して 2 つのファイル ハンドルを開いているのが気に入らないようです。どうすればこれを行うことができますか?