我有两个列表:
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]
关于python - 如何返回 bool 值列表以查看一个列表的元素是否在另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430454/