問題描述
我有兩個平面列表,其中一個包含重復值.例如,
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.
這篇關于兩個列表的交集,在第一個列表中保留重復項的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!