通过与第二个列表Python进行比较来从列表中删除项目

时间:2015-07-16 14:33:39

标签: python list if-statement for-loop list-comprehension

一个小例子。我有两个带有数字的列表,radec。我有第三个列表,也有一些数字quad

我要做的是删除ra中的decquad的值。

>>> ra = [1,1,1,2,3,4,5,6,7,8]
>>> dec = [1,2,3,4,5,6,7,7,7,7]
>>> quad = [1,2,3,1,2,3]
>>> new_ra = []
>>> new_dec = []
>>> for a,b in zip(ra,dec):
        if ((a not in quad) & (b not in quad)):
            new_ra.append(a)
            new_dec.append(b)

所以你会期待:

new_ra = [4,5,6,7,8]

new_dec = [4,5,6,7,7,7]

然而,我得到了:

new_ra = [4,5,6,7,8] 

正如所料,但是,

new_dec = [6,7,7,7,7]

为什么会这样?我的循环出了什么问题?

P.S。我遵循与THIS QUESTION中相同的方法,但我的第二个列表没有给出正确答案。

1 个答案:

答案 0 :(得分:1)

为什么不使用简单的列表理解?

new_ra = [v for v in ra if v not in quad]
new_dec = [v for v in dec if v not in quad]