The*_*tor 3 python for-loop if-statement list-comprehension list
一个小例子。我有两个带有数字的列表,ra还有dec这里。我这里有第三个列表,其中也有一些数字quad。
我想要做的是删除ra和dec中的那些值quad。
>>> 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)
Run Code Online (Sandbox Code Playgroud)
所以在这里你会期望:
new_ra = [4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
和
new_dec = [4,5,6,7,7,7]
Run Code Online (Sandbox Code Playgroud)
然而,我得到:
new_ra = [4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,但是,
new_dec = [6,7,7,7,7]
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?我的循环出了什么问题?
PS我遵循与此问题相同的方法,但我的第二个列表没有给我正确的答案。
为什么不使用简单的列表理解呢?
new_ra = [v for v in ra if v not in quad]
new_dec = [v for v in dec if v not in quad]
Run Code Online (Sandbox Code Playgroud)