在 python 中获取列表和嵌套列表之间的公共列表元素
Get common list elements between list and a nested list in python
如果 ListA 中存在 listB[0],我想从 listB 中提取列表元素
listA = ["A", "B"]
listB = [("F",4),("A",7),("C",5)]
预期列表:[("A",7)]
我试过了:
[[i for i in listB if x == i[0]] for x in listA]
但我得到了这个结果:[[('A', 7)], []]
我也尝试用 MAP 和 lamda 来做,但我遇到了错误。
谁能告诉我错误到底在哪里
list(map(lambda x: i for i in listB if x == i[0], listA))
你只需要做一个循环。 in
运算符将执行另一个操作。
>>> listA = ["A", "B"]
>>> listB = [("F",4),("A",7),("C",5)]
>>> [pair for pair in listB if pair[0] in listA]
[('A', 7)]
理解与映射和过滤函数之间存在等价关系。但是这个等效的映射和过滤器不需要 map()
:
>>> list(filter(lambda pair: pair[0] in listA, listB))
[('A', 7)]
惯用的 Python 风格是如果您必须制作 lambda,则更喜欢理解版本。
如果 ListA 中存在 listB[0],我想从 listB 中提取列表元素
listA = ["A", "B"]
listB = [("F",4),("A",7),("C",5)]
预期列表:[("A",7)]
我试过了:
[[i for i in listB if x == i[0]] for x in listA]
但我得到了这个结果:[[('A', 7)], []]
我也尝试用 MAP 和 lamda 来做,但我遇到了错误。 谁能告诉我错误到底在哪里
list(map(lambda x: i for i in listB if x == i[0], listA))
你只需要做一个循环。 in
运算符将执行另一个操作。
>>> listA = ["A", "B"]
>>> listB = [("F",4),("A",7),("C",5)]
>>> [pair for pair in listB if pair[0] in listA]
[('A', 7)]
理解与映射和过滤函数之间存在等价关系。但是这个等效的映射和过滤器不需要 map()
:
>>> list(filter(lambda pair: pair[0] in listA, listB))
[('A', 7)]
惯用的 Python 风格是如果您必须制作 lambda,则更喜欢理解版本。