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]