Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 而不是setset2,那么代码将是O(n*m)@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得_Python_Arrays_Algorithm_Sorting - Fatal编程技术网

Python 而不是setset2,那么代码将是O(n*m)@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得

Python 而不是setset2,那么代码将是O(n*m)@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得,python,arrays,algorithm,sorting,Python,Arrays,Algorithm,Sorting,而不是setset2,那么代码将是O(n*m)@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得的),但我发现当n,m=20,19时,使用一个集合比一个列表快2倍。我将在上面发布我的基准测试方法。我想在一个大的列表中,它会更快?干净和简单!谢谢:)@Padraiccanningham:是的,对于大型列表,这将快得多(线性复杂度与二次复杂度


而不是set
set2
,那么代码将是
O(n*m)
@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得的),但我发现当
n,m=20,19
时,使用一个集合比一个列表快2倍。我将在上面发布我的基准测试方法。我想在一个大的列表中,它会更快?干净和简单!谢谢:)@Padraiccanningham:是的,对于大型列表,这将快得多(线性复杂度与二次复杂度)。检查集合中的成员身份是
O(1)
,而检查列表中的成员身份是
O(n)
。上面是
O(n)+O(m)
,其中
n=len(arr1)
m=len(arr2)
。如果您检查列表
arr2
中的成员资格而不是set
set2
,则代码将是
O(n*m)
@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得的),但我发现当
n,m=20,19
时,使用一个集合比一个列表快2倍。我将在上面发布我的基准测试方法。我想在一个大的列表中,它会更快?干净和简单!谢谢:)@Padraiccanningham:是的,对于大型列表,这将快得多(线性复杂度与二次复杂度)。检查集合中的成员身份是
O(1)
,而检查列表中的成员身份是
O(n)
。上面是
O(n)+O(m)
,其中
n=len(arr1)
m=len(arr2)
。如果您检查列表
arr2
中的成员资格而不是set
set2
,则代码将是
O(n*m)
@unutbu,酷。在我写完之后,我意识到了这一点。在出现明显差异之前,我们谈论的是什么样的数字?@PadraicChanningham:这可能取决于许多因素(换句话说,对于各种数据,为您自己进行基准测试是值得的),但我发现当
n,m=20,19
时,使用一个集合比一个列表快2倍。我将在上面发布我的基准测试方法。
In [16]: set2 = set(arr2)

In [17]: [item for item in arr1 if item in set2]
Out[17]: [5, 1, 4, 6, 2]
In [20]: import random

In [21]: arr1 = range(20)

In [22]: random.shuffle(arr1)

In [23]: arr2 = random.sample(arr1, len(arr1)-1)

In [25]: %timeit set2 = set(arr2); [item for item in arr1 if item in set2]
100000 loops, best of 3: 2.13 µs per loop

In [26]: %timeit [item for item in arr1 if item in arr2]
100000 loops, best of 3: 4.49 µs per loop