Python基于列表从列表列表中删除

时间:2017-05-22 19:10:21

标签: python list

我需要根据第二个列表从列表列表中删除列表。我有以下内容:

LA = []
LA.append([u'02fc0b', u'val1', u'val2'])
LA.append([u'0a1ac', u'val1', u'val2'])
LA.append([u'02fc0b', u'val1', u'val2'])
LA.append([u'safsdf', u'val1', u'val2'])
LA.append([u'lmuylj', u'val1', u'val2'])


EXCL = []
EXCL.append('02fc0b')
EXCL.append('safsdf')

我想在LA []中排除任何列表,其中位置0的值出现在EXCL []中。我可以通过循环完全做到这一点,但我觉得有更多的Pythonic方法可以使用,我很乐意学习。

1 个答案:

答案 0 :(得分:4)

您可以将filter与自定义条件一起使用:

LA = []
LA.append([u'02fc0b', u'val1', u'val2'])
LA.append([u'0a1ac', u'val1', u'val2'])
LA.append([u'02fc0b', u'val1', u'val2'])
LA.append([u'safsdf', u'val1', u'val2'])
LA.append([u'lmuylj', u'val1', u'val2'])


EXCL = []
EXCL.append('02fc0b')
EXCL.append('safsdf')

d = set(EXCL)
print(list(filter(lambda v: v[0] not in d, LA)))
#[['0a1ac', 'val1', 'val2'], ['lmuylj', 'val1', 'val2']]