我有以下列表:
ScrollView
和
t0=[['a'],
['a', 'h'],
['a', 'd', 'k', 'r', 'v'],
['a', 'b', 'c', 'k'],
['a', 'b', 'c', 's', 'u'],
['a', 'b', 'f', 't'],
['a', 'b', 'e', 'l', 'n', 'o'],
['a', 'b', 'd', 'n', 'o'],
['a', 'b', 'd', 'e', 'n', 'o'],
['a', 'b', 'd', 'e', 'm', 'n', 'o', 't']]
对于t1中的每个元素,我要遍历t0并选择其中t1是子集的元素,则输出应如下所示:
t1=[['a', 'b'], ['a', 'c'], ['a', 'd']]
因此,例如,第一个元素是[[["a", "b", "c", "k"], ["a", "b", "c", "s", "u"], ["a", "b", "f", "t"], ["a", "b", "e", "l", "n", "o"], ["a", "b", "d", "n", "o"], ["a", "b", "d", "e", "n", "o"], ["a", "b", "d", "e", "m", "n", "o", "t"]],
[["a", "b", "c", "k"], ["a", "b", "c", "s", "u"]],
[["a", "d", "k", "r", "v"], ["a", "b", "d", "n", "o"], ["a","b", "d", "e", "n", "o"], ["a", "b", "d", "e", "m", "n", "o","t"]]]
,因此输出的第一个元素将是t0的那些元素,其中['a','b']
是它们的子集。
我想知道如何编写一个函数来做到这一点?
答案 0 :(得分:2)
我认为这就是您想要的:
[[j for j in t0 if set(i) <= set(j)] for i in t1]
答案 1 :(得分:0)
在python 2中,您可以执行以下操作:
map(lambda x: filter(lambda y: set(x) <= set(y), t0), t1 )
在python 3中,将是:
list(map(lambda x: list(filter(lambda y: set(x) <= set(y), t0)), t1 ))