Python是一种快速计算列表匹配的方法

时间:2012-11-18 20:57:17

标签: python

print sum(1 for x in alist if x[1] == 8)

这段代码运行正常,但速度很慢。有没有比这更好的方法。因为,我的列表非常大,计算需要花费很多时间。你知道更好更快的方法吗?

3 个答案:

答案 0 :(得分:2)

您必须创建索引或缓存计数以加速此类代码;交易记忆的速度。

无论您处理列表(添加到列表,从中删除,编辑条目),您都可以维护索引。例如,如果你有一个计数字典,其中ids为键,频率为值,你所要做的就是直接查看计数,并确保在操作alist时计数保持最新

管理此方法的最佳方法是将列表封装在自定义类型中,以便您可以控制对数据结构的所有操作并保留额外信息。

答案 1 :(得分:0)

不确定它会加快多少但

len([x for x in alist if x[1] == 8])

更清楚一点。

答案 2 :(得分:0)

我会使用numpy。我的numpy技能有点生疏,但是len(np_array == 8)会为你提供单个深度数组所需的功能。我认为你会len(np_array[:,1]),但我必须检查(这假设你的问题可以使用numpy数组)