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

如何在列表清单中找到共同的元素?

贺玉石
2023-03-14
问题内容

我试图弄清楚如何比较n个列表以查找常见元素。例如:

p=[ [1,2,3],
    [1,9,9],
      ..
      ..
    [1,2,4]

>> print common(p)
>> [1]

现在,如果我知道元素的数量,就可以进行比较:

for a in b:
  for c in d:
    for x in y:
...

但是如果我不知道p有多少个元素,那将行不通。我看过比较两个列表的此解决方案

您可以使用

def returnMatches(a,b):
       return list(set(a) & set(b))

但是在花了4个小时尝试找到一种使之递归的方法之后,仍然没有找到解决方案,因此对您的任何帮助将不胜感激!


问题答案:

您正在寻找所有子列表的集合交集,并且应该用于集合操作的数据类型是集合:

result = set(p[0])
for s in p[1:]:
    result.intersection_update(s)
print result


 类似资料:
  • 问题内容: 我有一个整数数组列表。我需要找到两者之间的共同点。我能想到的是 两个列表 中“ 通用”元素中列出的内容 的扩展 数组中也没有重复项。 有没有直接的方法可以做到这一点? 问题答案: 您可以将列表转换为集合,然后使用方法在不同集合之间进行交集。与所有集合相交后,剩下的就是公共元素,可以将结果集合转换回列表。

  • 问题内容: 我明白 将导出列表中最常见的元素 但是如何在不使用辅助函数的情况下导出列表列表中最常见的元素? 例如 输出应等于。 当我尝试 它写道 谁能帮帮我吗? 问题答案: 有很多方法,但是我想让您知道,标准模块中有一些用于这类事情的好工具,例如: 或者,您可以(有点)将当前解决方案用于每个子列表:

  • 问题内容: 我有两个三个整数的对象。我想找到一种方法来返回两个列表的共同元素。有谁知道我如何实现这一目标? 问题答案: 使用。 如果要避免更改受到影响listA,则需要创建一个新的更改。

  • 问题内容: 从此列表: 我正在尝试创建: 被发现相同的任何值都被分组到其自己的子列表中。到目前为止,这是我的尝试,我在想应该使用循环吗? 问题答案: 有人提到它会得到 换句话说,当列表的编号不按顺序排列或为混乱列表时,该列表将不可用。 所以我有更好的答案来解决这个问题。

  • 我想知道的哪些元素在中。我需要输出一个有序的布尔值列表。但是我想避免循环,因为两个列表都有超过200万个元素。 这就是我所拥有的,它是有效的,但它太慢了: 我可以拆分列表并使用多线程,但如果可能的话,我更喜欢一个更简单的解决方案。我知道一些函数,比如sum()使用向量运算。我在找类似的东西。 如何让我的代码更高效?

  • 问题内容: 我有一个词表 我想将每个列表项与一个字符串进行比较,并且输出应该是最相似的词。示例:如果是,则是最相似的词。如何在python中执行此操作?通常,我在清单中所用的单词可以很好地区分。 问题答案: 使用difflib: 正如您从仔细阅读源代码可以看到的那样,“接近”匹配项的排序从最佳到最差。