Python 从两个数组中有条件地删除

Python 从两个数组中有条件地删除,python,arrays,list,Python,Arrays,List,我想根据第二个数组中元素的条件从数组中删除元素 比如说 array1 = [1,2,3,4] array2 = [5,4,3,2] condition = 4 我需要一个扫描第二个数组的循环,如果索引值高于条件,它将从第一个数组中删除该索引。我对伪代码的尝试是: for i in range(len(array2)): if array2[i] > condition: array1.pop(i) 会导致 array1 = [2,3,4] 我认为有一种更像蟒蛇

我想根据第二个数组中元素的条件从数组中删除元素

比如说

array1 = [1,2,3,4]
array2 = [5,4,3,2]
condition = 4
我需要一个扫描第二个数组的循环,如果索引值高于条件,它将从第一个数组中删除该索引。我对伪代码的尝试是:

for i in range(len(array2)):
    if array2[i] > condition:
        array1.pop(i)
会导致

array1 = [2,3,4]
我认为有一种更像蟒蛇的方法来理解列表。我的阵列大约有4000个,我会做几次


谢谢

列表理解如下所示:

[a for a, b in zip(array1, array2) if b <= condition]
您可以将列表理解与if语句一起使用,如下所示:

array1  = [x for i, x in enumerate(array1) if not array2[i] > condition]
请注意,对于所有使用lits理解的解决方案,实际上并不是从array1中删除或删除任何项,而是再次创建它。您试图做的事情可以这样完成:

for j in sorted([i for i, n in enumerate(array2) if n > condition], reverse=True):
    array1.pop(j)

sorted with reverse=True确保我们将从数组的后面开始弹出项目。

是否要从列表中删除元素或创建新列表?理解只适用于latterNote,这种方法将失败,因为当您从列表中弹出时,您会更改索引。尝试条件=3,您将得到[2,4]