python - 快速检查列表是否是嵌套列表元素之一的子列表

标签 python performance list

由于 SAT 求解器,我有一个逻辑公式模型的大嵌套 int 列表。 该列表有 100 万个子列表,长度约为 30。

示例数据:

[[-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, -34, 35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, -34, 35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, 35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, 35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, -35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, -31, 32, 33, 34, -35, 36, 37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, 31, 32, 33, 34, -35, 36, -37], [-1, -2, 3, -4, -5, 6, 7, -8, -9, -10, -11, -12, 13, 14, 15, -16, 17, -18, -19, -20, 21, 22, 23, 24, 25, -26, -27, 28, 29, 30, 31, 32, 33, 34, -35, 36, 37]]

我需要检查一个列表(例如 [4,5,6])是否包含属于嵌套列表之一的元素。

假设我的 list 是:

[ [5,12,46,4,99,6],[23,66,99,32,77] ]

如果我用

运行我的程序
[4,5,6]

它应该返回true

由于我需要使用不同的列表执行 500 次测试,我猜问题是性能关键。

这是我的计划:

  • 对列表进行排序以检查
  • 对大嵌套列表进行排序
  • 始终首先比较两个最小的数字(假设我搜索 2 并且子列表以 3 开头,我可以继续到下一个子列表)

或者是否有更好的方法,例如使用字典?

(PS:由于我只寻找正数,因此我之前询问了 this question 以消除所有负数。)

最佳答案

使用集:

>>> data = [ [5,12,46,4,99,6],[23,66,99,32,77] ]
>>> set_data = [set(s) for s in data]
>>> set_data
[set([99, 4, 5, 6, 12, 46]), set([32, 66, 99, 77, 23])]
>>> myset = set([4,5,6])
>>> [myset.issubset(s) for s in set_data]
[True, False]

关于python - 快速检查列表是否是嵌套列表元素之一的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870030/

相关文章:

python - 从不同大小的元组填充 DataFrame

python - 从 python spawn 子进程接收连续输出不起作用

python - Keras model.fit() 发出 TypeError : 'NoneType' object is not callable

python - 如何迭代列表的名称

java - 迁移JUL到log4j2,性能不及预期。什么地方出了错?

algorithm - CPU 使用率是如何计算的?

r - 高效的R代码,用于查找与向量中的唯一值相关的索引

python - 混淆矩阵错误 "Classification metrics can' t 处理多标签指示符和多类目标的混合”

python - 如何在 Pandas 数据框中的动态列中添加值?

javascript - CDN 上有哪些著名的 JavaScript 库,URL 是什么?