1

たくさん見て回って、itertools pacakgeを見つけましたが、私が知る限り、どの関数も私が必要としていることを正確に実行していません。自分で関数を書き始めましたが、この二重リストの反復の全部または一部を実行できる組み込み関数を知っている人はいないでしょうか。

私がやりたいのは、2つのリストを一度に繰り返し、それぞれの値を比較し、その比較の結果として何かを実行し、1つのリストの同じ行にとどまり、2番目のリストの次の行に移動することです。リスト(比較の結果に基づく)。次に例を示します。

ListA= [[1, 7, 3],
        [1, 12, 4],
        [1, 9, 5]]

ListB= [[2, 2, 3],
        [2, 2, 3],
        [2, 5, 4]]

各リストを1行ずつ調べて、最終的な位置の数値を比較したいと思います。それらが等しい場合は、2秒の数値を加算します。ただし、ListBの3番目の数値がListAの3番目の数値と等しい限り、それらを追加し続けたいと思います。つまり、ListBが2つ下に移動している間、ListAは同じ行に留まる可能性があります(これが、itertools関数が機能しない理由です。これらはすべて、各リストの各行を同時にチャンクダウンしているように見えるためです)。したがって、出力は次のようになります。

Iteration 1 ListOut= [[9, 3]]

Iteration 2 ListOut= [[11,3]]

Iteration 3 ListOut= [[11,3], [17, 4]]

Iteration 4 ListOut= [[11,3], [17, 4],  [9, 5]]
4

1 に答える 1

4

あなたはこのようなことをしたいと思うでしょう:

listb_iter = iter(ListB)
item_b = next(listb_iter) #we're assuming that ListB as at least one item.
for item_a in ListA:
    if ...: #condition to move on to the next item in ListB
        try:
            item_b = next(listb_iter)
        except StopIteration:
            #went through all of ListB

    #other logic
于 2012-10-18T04:10:56.127 に答える