我有以下清单:
l =
[
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]我想删除不符合以下约束的所有列表:列表必须包括['s5','s6','s8']和['s15', 's23']
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']预期结果是:
[
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']
]我怎样才能做到呢?
我尝试使用set(l1).issubset(t)和set(l2).issubset(l),但是set只返回唯一的值。
发布于 2019-11-09 15:59:13
您可以使用filter和set检查条件。
使用filter,您也可以维护订单。
>>> list(filter(lambda x : not(set(l1+l2)-set(x)), l))
>>> [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]发布于 2019-11-09 15:57:57
我想你可以做一次会员检查:
l = [
['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23'],
['s1', 's5', 's6', 's10', 's14', 's15', 's23']
]
l1 = ['s5','s6','s8']
l2 = ['s15', 's23']
l1_s = ''.join(l1)
l2_s = ''.join(l2)
print([x for x in l if l1_s in ''.join(x) and l2_s in ''.join(x)])
# [['s1', 's5', 's6', 's8', 's10', 's5', 's15', 's23'],
# ['s1', 's5', 's8', 's10', 's5', 's6', 's8', 's15', 's23']]https://stackoverflow.com/questions/58780850
复制相似问题