【问题标题】:Python List efficient comparison [duplicate]Python List 高效比较[重复]
【发布时间】:2017-12-30 16:28:22
【问题描述】:

我有两个列表,例如:

A=[1,2,3,4]
B=[3,6,7,8,9,10]

我想比较这两个列表,如果至少有一个共同元素,则返回 True,否则返回 False。目前我正在使用以下内容:

Set(A)&Set(B)

但是,这并不是实现此目的的最有效方式。我有超过 200 万个集合,每个集合中需要比较的元素超过 10K。我真的不需要比较所有元素。

在 Python 中是否有任何内置函数或者我需要为它编写自定义函数?

【问题讨论】:

标签: python list comparison


【解决方案1】:

您可以连接列表、强制转换为设置并检查是否存在:

A=[1,2,3,4]
B=[3,6,7,8,9,10]
def check_existence(a, b):
   return bool([i for i in set(a+b) if i in set(a) and i in set(b)]
print(check_existence(A, B))

【讨论】:

    【解决方案2】:

    我认为关键是您需要改进数据结构以在获取或接收数据时存储数据。

    例如,使用 dict 来存储它们,key = 你数组中的数字,value 表示 A, B or (A and B), A = 1, B = 2 , A and B = 3。

    然后你可以检查是否有任何值= 3,你可以返回True。

    如果你能保持值的顺序,那就太好了,因为你只得到最大的值,如果是3,那么返回True,即O(1)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2019-05-20
      • 2021-11-18
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多