当前位置: 首页 > 面试题库 >

两个列表的Python交集保持重复

施晗昱
2023-03-14
问题内容

我有两个平面列表,其中一个包含重复值。例如,

array1 = [1,4,4,7,10,10,10,15,16,17,18,20]
array2 = [4,6,7,8,9,10]

我需要在array1中也找到array2中的值,并保留array1中的重复项。预期的结果将是

result = [4,4,7,10,10,10]

我想避免循环,因为实际数组将包含数百万个值。我尝试了各种布景和相交组合,但无法保留重复项。

任何帮助将不胜感激!


问题答案:

您是什么意思不想使用循环?您将不得不以一种或另一种方式对其进行迭代。只需单独放入每个项目,然后检查是否array2随身携带:

items = set(array2)
found = [i for i in array1 if i in items]

此外,根据您将如何使用结果,请考虑使用生成器:

found = (i for i in array1 if i in array2)

这样您就不必一次将整个内容存储在内存中。



 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 从列表列表中删除重复项 (12个答案) 4年前关闭。 这是我的两个清单。 我的输出应为以下内容; 如何获得此输出? 先感谢您 问题答案: 您将必须将列表转换为元组列表,然后使用交集。请注意,下面的解决方案可能具有不同顺序的元素,并且由于我使用的是set,因此显然不会存在重复项。 您也可以将交叉点保存在变量中并获取最终列表,如果需要排序,则需要重复: 和交

  • 问题内容: a = [1,1,1,2,3,4,4] >>> b = [1,1,2,3,3,3,4] 请注意,这不是一个相同的问题: 两个列表的Python交集保持重复 因为即使列表a中有三个1,列表b中也只有两个,所以结果应该只有两个。 问题答案: 您可以使用此方法,当您使用交叉路口时,它将为每个元素提供在任一列表中找到的最低计数。 输出 :

  • 问题内容: 我知道如何得到两个平面列表的交集: 但是当我必须找到嵌套列表的交集时,我的问题就开始了: 最后,我希望收到: 你们能帮我这个忙吗? 问题答案: 如果你想: 然后这是你的Python 2解决方案: 在Python 3 返回一个迭代,而不是,所以你需要用filter与呼叫list(): 说明: 过滤器部分接受每个子列表的项目,并检查它是否在源列表c1中。对c2中的每个子列表执行列表推导。

  • 问题内容: 我正在使用python进行游戏,并且能够得到两个列表的交集: 现在,如果一个列表包含和并包含第三个元素,是否有一个内置函数来查找内部所有三个列表的交集?例如 那么结果应该是 问题答案: 对于2.4,您只需定义一个交集函数。 对于较新版本的python: 相交方法接受任意数量的参数 或者,您可以将第一个集合与其自身相交,以避免切片列表并进行复制: 我不太确定哪种方法会更有效,并且感觉这将

  • 问题内容: 我试图根据某些条件并执行一些步骤来找到两个列表。在学习阶段找不到方法:) 如您所见,逻辑很简单 根据某个过滤器从订单中获取所有项目,并与另一个过滤器相交并做一些事情。 问题答案: 最简单的方法是这样的:

  • 我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例: