Skip to main content
 首页 » 编程设计

python之如何返回 bool 值列表以查看一个列表的元素是否在另一个列表中

2025年05月04日9lonelyxmas

我有两个列表:

A = [1,2,3,4,5,6,7,8] 
B = [2,3,4] 

并希望获得一个长度为 (A) 的 bool 列表,其中每个索引处的元素指示 A 中同一索引处的元素是否在列表 B 中的任何位置。返回值将是:

[False, True, True, True, False, False, False, False]  

编写函数很容易,但想知道在 Python 中是否有一种典型的方法。

在 R 中,对应的是

which(A %in% b) 

请您参考如下方法:

使用列表理解:

In [164]: A = [1,2,3,4,5,6,7,8] 
 
In [165]: B = [2,3,4] 
 
In [166]: [x in B for x in A] 
Out[166]: [False, True, True, True, False, False, False, False] 

如果 B 很大,那么最好先将其转换为 set。因为,集合的成员资格测试是 O(1) 与列表中的 O(n) 相比。

In [167]: b=set(B) 
 
In [168]: [x in b for x in A] 
Out[168]: [False, True, True, True, False, False, False, False]