Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的搜索算法';s列表_Python_List - Fatal编程技术网

python中的搜索算法';s列表

python中的搜索算法';s列表,python,list,Python,List,检查列表中是否存在元素的效率如何 假设我有一个列表L=[1,2,3,4,5],我执行以下命令: 5 in L >>> True 12 in L >>> False 这两件事都要花多少时间。确切地说,python的列表采用什么样的搜索算法?检查列表中的成员身份是一个O(n)操作。 将检查列表中的每个项目是否相等。如果发现某项相等,则返回True。因此,检查成员资格所需的时间取决于列表的长度和项目在列表中的位置(如果有): 相反,检查集合或dict中的成员身份是

检查列表中是否存在元素的效率如何

假设我有一个列表L=[1,2,3,4,5],我执行以下命令:

5 in L
>>> True
12 in L
>>> False

这两件事都要花多少时间。确切地说,python的列表采用什么样的搜索算法?

检查列表中的成员身份是一个
O(n)
操作。 将检查列表中的每个项目是否相等。如果发现某项相等,则返回True。因此,检查成员资格所需的时间取决于列表的长度和项目在列表中的位置(如果有):

相反,检查集合或dict中的成员身份是一个
O(1)
操作

In [103]: s = set(xrange(10**6))

In [104]: %timeit 0 in s
10000000 loops, best of 3: 48 ns per loop

In [105]: %timeit 999999 in s
10000000 loops, best of 3: 65.3 ns per loop

In [106]: %timeit 1000001 in s
10000000 loops, best of 3: 45.7 ns per loop

这里是一个wiki页面,总结了这个问题。

检查列表中的成员身份是一个
O(n)
操作。 将检查列表中的每个项目是否相等。如果发现某项相等,则返回True。因此,检查成员资格所需的时间取决于列表的长度和项目在列表中的位置(如果有):

相反,检查集合或dict中的成员身份是一个
O(1)
操作

In [103]: s = set(xrange(10**6))

In [104]: %timeit 0 in s
10000000 loops, best of 3: 48 ns per loop

In [105]: %timeit 999999 in s
10000000 loops, best of 3: 65.3 ns per loop

In [106]: %timeit 1000001 in s
10000000 loops, best of 3: 45.7 ns per loop

下面是一个wiki页面,总结了搜索的结果。

Python列表是线性搜索的。每次测试一个元素,从索引0到最后一个。Python列表是线性搜索的。每次测试一个元素,从索引0到最后一个。请注意,在Python 3中,范围(10**6)内的
1000001将只需要纳秒完成。请注意,范围(10**6)内的
1000001将只需要纳秒完成。