Python:使用另一个列表过滤列表列表

时间:2013-08-26 16:15:59

标签: python list filter

我正在尝试过滤列表,我想从列表中提取A(是列表列表),这些元素匹配它们的键索引0,另一个列表B具有一系列值

像这样

list_a = list(
  list(1, ...),
  list(5, ...),
  list(8, ...),
  list(14, ...)
)

list_b = list(5, 8)

return filter(lambda list_a: list_a[0] in list_b, list_a)

应该返回:

list(
    list(5, ...),
    list(8, ...)
)

我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:22)

使用列表理解:

result = [x for x in list_a if x[0] in list_b]

为了提高性能,请先将list_b转换为设置。

正如@kevin在评论中指出的那样list(5,8)(除非它不是伪代码)是无效的,你会收到错误。

list()只接受一个项目,该项目应该是iterable / iterator

答案 1 :(得分:1)

你其实很亲密。就这样做:

list_a = list(
  list(1, ...),
  list(5, ...),
  list(8, ...),
  list(14, ...)
)

# Fix the syntax here
list_b = [5, 8]

return filter(lambda list_a: list_a[0] in list_b, list_a)