Python - 同时遍历两个列表而不在每次迭代中都移动到下一行

标签 python list iteration

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

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

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]]

最佳答案

你想做这样的事情:

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

关于Python - 同时遍历两个列表而不在每次迭代中都移动到下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946815/

相关文章:

python - 一次附加多个列表

c++ - 创建 "relative"优先级队列的算法? (c/c++)

html - 填充底部,仅在列表中显示文本

loops - 如何为具有基础集合的结构实现非消耗性的IntoIterator?

python - 遍历 numpy.ma 数组,忽略屏蔽值

python - 使用 RSTP 的 DNN OpenCV Python 总是在几分钟后崩溃

python - 在函数中模拟函数

带有/父 ID 的 PHP 多维数组到类别分类数组,Ebay 样式

python - django/celery - celery 状态 : Error: No nodes replied within time constraint

python 如何按数字=字符串对字符串列表进行排序