列表理解,获取匹配的嵌套项

2024-04-20 06:50:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,我需要得到匹配的项目集。在

list1 = [1,2,3]
list2 = [1,2,3,4]
a = [(x, y) for x in list1 if x in [y for y in list2]]

它正确地得到X,但正如预期的那样,它只给出嵌套列表(y)中的第一个项,而不是匹配的项。在

什么是最简单的方法使这个工作,并得到匹配的X和Y?有没有办法避免使用regex?在

更新:为了更清楚地说明,以上只是示例-实际代码是:

^{pr2}$

新的_id和get_existing_KeyO是两个不同型号的项目列表:

get_existing_KeyO = list(KeyO.objects.filter(
keyword__in=[x['keyword'] for x in related_data]).all())

Tags: 项目方法in示例列表forgetif
1条回答
网友
1楼 · 发布于 2024-04-20 06:50:22

如果要在两个列表之间获取公共元素,可以使用集合来执行此操作:

>>> set(list1).intersection(list2)
set([1, 2, 3])

但请记住,这将只返回到公共元素(没有重复元素),例如:

^{pr2}$

如果你想要列表理解,你也可以这样做:

>>>list1 = [1,2,3]
>>>list2 = [1,2,3,4]
>>>a = [x for x in list1 if x in list2]
>>> a
[1, 2, 3]

在这里,列表理解将被list1的长度耗尽,因此如果您有:

>>> list1 = [1,2,3,7]
>>> list2 = [1,2,3,4,7,8,7,7,7]
>>> a = [x for x in list1 if x in list2]
>>> a
[1, 2, 3, 7]

您将无法获得最后的元素7,7,7,因为搜索已被list1的长度耗尽(限制),但是如果您以这种方式反转它:

>>> a = [x for x in list2 if x in list1]
>>> a
[1, 2, 3, 7, 7, 7, 7]

在这里,所有元素(公共元素和重复元素)都被捕获。在

相关问题 更多 >