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

标签 python list matching

我有两个列表:

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/

相关文章:

python - 从 CSV 文件创建图形并使用 Django 和 Pandas Python 库呈现到浏览器

Python 元组列表 - 交集和并集的问题

Python 将列表的第一个元素与其余元素一起压缩

python - 两个不同数据帧(dfs)中单词之间的字符串文字匹配并生成一个新的数据帧

algorithm - 完全图的最大加权配对算法

python - 在Python中,如何将 'translate'中的 'list'元素转移到另一个 'list'中的元素?

python - django-allauth,我怎样才能只允许通过社交注册/登录?

python通过rabbitmq传递二进制文件

java - Jython Swing : Randomly Occurring Java ImageIO IOException

python 从文件中删除特定行