首页 > 解决方案 > 通过其子集选择列表的元素

问题描述

我有以下列表:

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=[['a', 'b'], ['a', 'c'], ['a', 'd']]

对于 t1 中的每个元素,我想通过 t0 并选择 t1 是子集的元素,输出应如下所示:

[[["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"]]]

因此,例如,第一个元素是['a','b']输出的第一个元素将是 t0 的那些元素,其中['a','b']是它们的子集。我想知道如何编写一个函数来做到这一点?

标签: pythonlistfunctional-programming

解决方案


我认为这就是你要找的:

[[j for j in t0 if set(i) <= set(j)] for i in t1]

推荐阅读