在python中搜索列表的最快方法

blc*_*llo 26 python search list set find

当你做这样的事情"test" in a哪里a是一个列表并蟒蛇做了顺序搜索在名单上,它创建一个哈希表表示,以优化查询?在我需要这个我会在应用程序的列表上做了很多的查找它,最好的办法是做这样的事情b = set(a),然后"test" in b?另请注意,我将拥有的值列表不会有重复数据,我实际上并不关心它的顺序; 我只需要能够检查是否存在值.

orl*_*rlp 57

另请注意,我将拥有的值列表不会有重复数据,我实际上并不关心它的顺序; 我只需要能够检查是否存在值.

不要使用列表,请set()改用.它具有您想要的属性,包括快速in测试.

我已经看到了20倍甚至更高的加速度(大多数是重数字运算),其中一个列表被更改为一组.

  • 我使用了这个,它花费了大量的时间。谢谢你。 (2认同)
  • 哇,我有一个愚蠢的脚本蛮力通过两个文件来查找相似的行,这只是将时间从大约 20 分钟缩短到不到 1 分钟。谢谢! (2认同)
  • 有了一个非常大的列表和近 200 万次检查,计算时间从 3 小时减少到 < 1 分钟!!!! (2认同)

Sve*_*ach 9

"test" in a使用列表a将进行线性搜索.动态设置哈希表比线性搜索要昂贵得多. "test" in b另一方面,将执行amoirtisation O(1)哈希查找.

在您描述的情况下,似乎没有理由在集合上使用列表.