1

2 次元配列の最初の列で文字列を検索する必要があります。最も明白な方法は

for i in range (0, len(list)):
if list[i][0]==searchstring:
   list[i][4]=do_a_bunch_of_stuff

同じ行に do_a_bunch_of_stuff できるように、「i」がどこにあるかを知る必要があります。2次元配列のすべての行をループする必要があります

きれいなコードではなく、速度が主な要因です。これを行う最速の (CPU パフォーマンス) 方法は何ですか?

4

2 に答える 2

1

これを行うより速い方法は実際にはありません。検索文字列の各内部リストの最初の要素を常に比較する必要があります。

以下は、いくつかのインデックス検索を回避するという理由だけで、わずかに高速になる可能性があります。

for x in lst:
    if x[0] == searchstring:
        x[4] = do_a_bunch_of_stuff
于 2013-02-19T20:14:30.150 に答える
0

列はソートされていないため、すべての要素をチェックする必要があるため、線形検索が検索から期待できる最速になります。

これが繰り返し実行する必要があるプロセスである場合は、辞書を使用してインデックスを作成できます。

index = {}
for i in range (0, len(list)):
    index[list[i]] = index.get(list[i], list()) + [i]

次に、次を使用して、検索する必要がある文字列のインデックスを簡単に検索できます。

rows = index[some_string]

列 0 からの一意の値と起動する int のリストを格納しているため、これには追加のメモリ オーバーヘッドが伴います。

データを 2D 配列形式で保持する必要がない場合は、データを辞書として再構築することを検討してください。検索文字列をタプルのリストにマッピングするキーとして使用できます。各タプルは、その行の他の列からのデータを保持します。

于 2013-02-19T20:21:22.303 に答える