簡體   English   中英

在python中滿足i-1條件時迭代兩個列表

[英]Iterate over two lists while i-1 condition is met in python

我有兩個列表,我想以成對方式進行迭代,以選擇滿足我條件的對

list1 = [0, 6, 22, 29]
list2 = [3, 38, 48]

我使用zip遍歷它們:

for i, j in list(zip(list1, list2)):
  print(i, j)

這返回

0  3
6  38
22 48

這可以正常工作,但我要在以下條件下構建:僅當一對的第一個值( i )大於上一個對的最后一個值( j )時,才返回該對。

在這種情況下,前兩對是正確的,但是第三對不是正確的,因為6:48包含22

如何將這種邏輯構建到循環中?

首先,您不需要將zip()轉換為list() ,因為您只是在遍歷它。

然后,您可以將第三個列表添加到zip() ,該列表可用於進行比較。 您可以對list1list2進行切片,因為沒有要與之比較的“上對的最后j值”。

第三個參數list2將用於檢查條件。 在迭代期間,其元素k為“后一個索引”,因此它等於遇到的最后一個j

for i, j, k in zip(list1[1:], list2[1:], list2):
    if i > k:
        print(i, j)

如果您需要包括第一對,則可以使用@schwobaseggl找到的這個不錯的技巧:

for i, j, k in zip(list1, list2, [-1] + list2):
    if i > k:
        print(i, j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM