获取错误列表 在 Python 中从另一个列表中获取列表的对应元素时使用 map 函数



我有两个列表:

a = [1,2,3,4]
b = [True,False,True,False]

我想获取与b中的True相对应的a元素,不要使用for循环。 我使用map函数来解决它,但它出错了:

def f(x,y):
if x:
return y
s = list(map(f,b,a))

s[1, None, 3, None],我不要None,怎么办?

使用compress

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

输出:

[1, 3]

您可以使用filter删除None

前任:

a = [1,2,3,4]
b = [True,False,True,False]
def f(x,y):
if x:
return y
s = list(filter(None, map(f,b,a)))
print(s)

输出:

[1, 3]

为什么不直接压缩 2 个列表并选择与 True 对应的值?

a = [1,2,3,4]
b = [True,False,True,False]
print([x for x, y in zip(a, b) if y])

最新更新