gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:18:03 25 4
gpt4 key购买 nike

我有两个列表,我需要获取匹配的项目作为集合。

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 在集合中匹配的最简单方法是什么?有什么方法可以避免使用正则表达式吗?

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

list1 = [(x, y) for x in new_ids if x.KWuser in [y.keyword for y in get_existing_KeyO]]

new_ids 和 get_existing_KeyO 是来自 2 个不同型号的项目列表:

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

最佳答案

如果您希望获取两个列表之间的公共(public)元素,可以使用集合来实现:

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

但请记住,这只会返回常见元素(没有重复元素),示例:

>>> list1 = [1,2,3,7]
>>> list2 = [1,2,3,4,7,8,7,7,7]
>>> set(list1).intersection(list2)
set([1, 2, 3, 7])

如果您想要的话,您也可以使用列表理解来完成此操作,如下所示:

>>>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]

这里捕获了所有元素(常见的和重复的)。

关于python - 列表理解,获取匹配的嵌套项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com