1

如果匹配项目列表,返回列表的 T/F 列表的优雅方法是什么?

例如:

[1,3,5,4]
in
[4,3,7,5,8]

回报:

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

3 回答 3

4

测试集合中的成员资格是 O(1),而测试列表中的成员资格是 O(n)。所以(特别是对于一个大列表)你应该firstlist在测试成员资格之前转换成一个集合。

firstset = set(firstlist)
[(v in firstset) for v in otherlist]
于 2012-10-27T15:24:00.297 回答
3

使用列表理解:-

>>> list1 = [4, 3, 7, 5, 8]
>>> list2 = [1, 3, 5, 4]
>>> new_list = [elem in list2 for elem in list1]
>>> new_list
[True, True, False, True, False]
>>> 
于 2012-10-27T15:23:06.333 回答
2

通过使用列表推导:

[(v in firstlist) for v in otherlist]
于 2012-10-27T15:22:18.410 回答