我正在尝试过滤列表,我想从列表中提取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, ...)
)
我该怎么做?谢谢!
答案 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)