我需要验证一个列表是否是另一个列表的子集——我只需要布尔返回.

在交叉口后在较小的列表上测试平等性是最快的方法吗?考虑到需要比较的数据集的数量,性能至关重要.

根据讨论添加更多事实:

  1. 对于许多测试,这两个列表中的任何一个都是相同的吗?它的功能之一就是静电查找表.

  2. 它需要是一个列表吗?事实并非如此——静态查找表可以是性能最好的任何东西.动态的是一个dict,我们从中提取密钥来执行静态查找.

在这种情况下,最佳解决方案是什么?

推荐答案

使用set.issubset

例子:

a = {1,2}
b = {1,2,3}
a.issubset(b) # True
a = {1,2,4}
b = {1,2,3}
a.issubset(b) # False

Python为此提供的性能函数是set.issubset.不过,它确实有一些限制,不清楚这是否是你问题的答案.

一个列表可以多次包含项目,并且具有特定的顺序.一套不会.此外,设置仅处理hashable个对象.

你问的是子集还是子序列(这意味着你需要一个字符串搜索算法)?对于许多测试,这两个列表是否相同?列表中包含哪些数据类型?就这一点而言,它需要是一个列表吗?

你的另一篇博文intersect a dict and list让类型更清晰,并且确实得到了一个建议,使用字典键视图来实现类似集合的功能.在这种情况下,我们知道它是有效的,因为字典键的行为类似于一个集合(以至于在Python中使用集合之前,我们使用字典).人们不禁要问,这个问题是如何在三个小时内变得不那么具体的.

Python相关问答推荐

如何停止 func 运行并在一分钟后返回一个值?

如何获取html表中每一行的特定列的值?

从 json 文件加载项目描述

如何在不同的子图中绘制对,侧面有差异

python [0] * 3 如何独立但 [[0] * 3] * 3 每个子列表是同一个对象?

根据 Pandas Groupby 中的组合标准添加新列

正则表达式.获取两个括号之间的字符串(python)

按日期字段执行合并,而不在 DataFrame 中创建辅助列

PyQt5: 填充 QPolygon 中的孔 // 增加 qpolygon 的大小(高度)

Pandas .title() 当字符串有一个's

前向填充上述值的块 pandas

合并两个带有子标题的数据框

交换数组中的元素

想要在 Python 中通过在 Excel 中使用 TINV 获得相同的结果

如何使用 conda 在一行中安装多个包?

具有单一分类特征的 LSTM 预测

使用 .txt 文件中的数据验证用户输入

如何将 unicode 整数转换为 utf-8 字符?

Pandas :计算一行与所有其他行之间的差异并创建具有名称的列

使用 BeautifulSoup 抓取 URL 循环