从python中的另一个列表中获取列表的相应元素时,获取错误的列表使用map函数

lit*_*ely 1 python list

我有两个清单:

a = [1,2,3,4]
b = [True,False,True,False]
Run Code Online (Sandbox Code Playgroud)

我希望得到的元素a是coresponding到Trueb,不使用for循环.我使用该map函数来解决它,但它出错了:

def f(x,y):
    if x:
        return y
s = list(map(f,b,a))
Run Code Online (Sandbox Code Playgroud)

s是的[1, None, 3, None],我不想要None,我该怎么办?

Joe*_*Joe 8

用途compress:

from itertools import compress
a = [1,2,3,4]
b = [True,False,True,False]
s = list(compress(a, b))
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 3]
Run Code Online (Sandbox Code Playgroud)