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

发布于 2021-01-29 14:59:22

我有两个清单:

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

并想要获取一个长度为(A)的布尔列表,其中每个索引处的元素指示A中相同索引处的元素是否在列表B中的任何位置。返回值为:

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

编写一个函数很容易,但是想知道在Python中是否有一种范式来实现它。

在R中,对应项为

which(A %in% b)
关注者
0
被浏览
140
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用列表理解:

    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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看