EAl*_*ado 4 python list python-3.x
假设我有以下列表清单:
list1 = [[A,B],[C,D],[E, F]]
list2 = [A, B, F]
Run Code Online (Sandbox Code Playgroud)
我想要一个函数返回与第一个相关的公共列表.这个例子的期望结果是:
result = [[A,B],[],[F]]
Run Code Online (Sandbox Code Playgroud)
我已经尝试迭代list1的每个元素,并通过与list2进行比较,创建一个附加每个元素的新数组.我知道如何迭代列表列表,但我找不到为"结果"创建列表列表的方法.
列表不大,大约有5个元素.项目有可能重复,但整个列表中列表中的顺序并不重要.
使用集算术,非常简单快捷:
set2 = set(list2)
[list(set(e) & set2) for e in list1]
Run Code Online (Sandbox Code Playgroud)
如果列表可以包含非唯一项目,那么......让我们使用计数器!
from collections import Counter
counter2 = Counter(list2)
[list((Counter(e) & counter2).elements()) for e in list1]
Run Code Online (Sandbox Code Playgroud)
这是一种方法.运用list comprehension
例如:
list1 = [["A","B"],["C","D"],["E", "F"]]
list2 = ["A", "B", "F"]
result = [[j for j in i if j in list2] for i in list1]
print(result)
Run Code Online (Sandbox Code Playgroud)
输出:
[['A', 'B'], [], ['F']]
Run Code Online (Sandbox Code Playgroud)