1

我环顾四周,找到了 itertools pacakge,但据我所知,没有一个函数能完全满足我的需要。我已经开始自己编写一个函数,我可以做到,但我想知道是否有人知道一个内置函数可以完成这个双列表迭代的全部或部分?

我想要做的是一次遍历两个列表,比较每个列表的值,作为比较的结果做一些事情,并且可能停留在一个列表的同一行,同时移动到第二个列表的下一行列表(基于比较结果)。这是一个例子:

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

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

我想逐行浏览每个列表并比较最终位置的数字。如果它们相等,我想添加两个第二个数字。但我想继续添加它们,只要 ListB 中的第三个数字等于 ListA 中的第三个数字。这意味着 ListA 可能会保持在同一行,而 ListB 会向下移动一对(这就是 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 回答