0

約10000000行のリストのpythonリストがあり、各行には8つの要素があります。このリストを反復処理して処理するのが非常に遅いことに気付きました。プログラムのどこかで、特定のキーを使用してこのリストのリストを並べ替える必要もあります。これを 2 GB RAM のシステムで使用しています。このような大きなリストを処理する最善の方法は何ですか??

編集

約10000000のリストを持つdata[]を想定しましょう。各リストの0番目の要素を使用してデータをソートする必要があります

だから私は次のようにデータを繰り返しています

for m in data:

そして、私が使用しているソートのために

data=sorted(data, key=itemgetter(0))
4

1 に答える 1

2

あなたのソート基準が何であるかを知らなければ、私は多くを語ることはできません.

私が考えることができる最もメモリ効率の良い反復方法は、次を使用することitertools.chainです。

for element in itertools.chain.from_iterable(myLongList):
    print element

編集

sorted古いリストから新しいリストを作成します。list.sort代わりに、これをインプレースで行うために使用します。

myLongList.sort(key=operator.itemgetter(0))

各行の要素を反復処理し、どちらの側の項目にもアクセスできるようにする場合:

for rowInd, row in enumerate(myLongList):
    for colInd, element in enumerate(row):
        print "myLongList[%d][%d] is %s" %(rowInd, colInd, element)
于 2013-01-25T06:00:08.080 に答える