Intersection of two lists, keeping duplicates in the first list(两个列表的交集,在第一个列表中保留重复项)
问题描述
我有两个平面列表,其中一个包含重复值.例如,
I have two flat lists where one of them contains duplicate values. For example,
array1 = [1,4,4,7,10,10,10,15,16,17,18,20]
array2 = [4,6,7,8,9,10]
我需要在array1 中找到也在array2 中的值,将重复项保留在array1 中.期望的结果将是
I need to find values in array1 that are also in array2, KEEPING THE DUPLICATES in array1. Desired outcome will be
result = [4,4,7,10,10,10]
我想避免循环,因为实际数组将包含数百万个值.我尝试了各种集合和相交组合,但就是无法保留重复项..
I want to avoid loops as actual arrays will contain over millions of values. I have tried various set and intersect combinations, but just couldn't keep the duplicates..
推荐答案
你不想使用循环是什么意思?您将不得不以一种或另一种方式对其进行迭代.只需单独接收每个项目并检查它是否在 array2
中:
What do you mean you don't want to use loops? You're going to have to iterate over it one way or another. Just take in each item individually and check if it's in array2
as you go:
items = set(array2)
found = [i for i in array1 if i in items]
<小时>
此外,根据您将如何使用结果,考虑使用生成器:
Furthermore, depending on how you are going to use the result, consider having a generator:
found = (i for i in array1 if i in array2)
这样您就不必一次将整个内容全部记住.
so that you won't have to have the whole thing in memory all at once.
这篇关于两个列表的交集,在第一个列表中保留重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:两个列表的交集,在第一个列表中保留重复项
基础教程推荐
- 合并具有多索引的两个数据帧 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01