假设我有两个列表list1,list2如下:
list1 = [ 3, 4, 7 ]
list2 = [ 5, 2, 3, 5, 3, 4, 4, 9 ]
Run Code Online (Sandbox Code Playgroud)
我想找到list1其中存在的元素的数量list2.
预期输出为4,因为3和4 list1出现两次list2.因此,总计数为4.
使用列表理解并检查元素是否存在
c = len([i for i in list2 if i in list1 ])
Run Code Online (Sandbox Code Playgroud)
更好的一个来自@Jon ie
c = sum(el in list1 for el in list2)
Run Code Online (Sandbox Code Playgroud)
输出: 4
您可以使用sum(...)生成器表达式来实现此目的:
>>> list1 = [ 3, 4, 7 ]
>>> list2 = [ 5, 2, 3, 5, 3, 4, 4, 9 ]
# v returns `True`/`False` and Python considers Boolean value as `0`/`1`
>>> sum(x in list1 for x in list2)
4
Run Code Online (Sandbox Code Playgroud)
作为替代方案,您还可以使用Python的__contains__魔术函数来检查列表中是否存在元素,并用于filter(..)过滤掉列表中不满足“in”条件的元素。例如:
>>> len(list(filter(list1.__contains__, list2)))
4
# Here "filter(list(list1.__contains__, list2))" will return the
# list as: [3, 3, 4, 4]
Run Code Online (Sandbox Code Playgroud)
有关 的更多详细信息__contains__,请阅读:做什么__contains__,什么可以调用__contains__函数?。