1
359
:使用
在Python中,集合是使用哈希表存储的,搜索它们是非常简单的
但是
第四种方法是利用
如果您搜索的元素接近数组的开头(例如,它已排序),则倾向于使用生成器表达式,因为集合交集方法必须为中间变量分配新内存:
下面是此示例的执行时间随列表大小变化的曲线图:
请注意,两个轴都是对数轴。这表示生成器表达式的最佳情况。可以看出
另一方面,当搜索从混合表达式和生成器表达式的开头开始时,如果共享元素系统地位于数组的末尾(或者两个列表不共享任何值),则不相交和集合交集方法比生成器表达式和混合方法快得多。
下面是两种使用随机数的分析(而不是操纵设置来支持一种或另一种技术):
分享几率高:元素随机抽取
总而言之:
在大多数情况下,使用
|
2
25
注意:以上假设您想要一个布尔值作为答案。如果你只需要一个表达式
|
3
10
例如。:
它一到就会变成真的
这依赖于
|
4
4
|
5
3
|
6
2
正如John和Lie所指出的,当两个列表bool(i)==False中的每一个i共享时,这就给出了错误的结果。应该是:
|
7
1
最好的例子是:
因此,比遍历两个列表更快的是遍历一个列表以查看它是否在一个集合中,这是有意义的,因为检查一个数字是否在一个集合中需要固定的时间,而遍历一个列表的检查则需要与列表长度成比例的时间。 因此,我的结论是 遍历一个列表,检查它是否在一个集合中 |
8
1
如果您不关心重叠元素可能是什么,只需检查
|
9
1
我将用函数式编程风格再加上一个:
说明:
|
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
The Great · 拆分并存储数据帧,但名称基于特定列中的唯一值 2 年前 |
Klimt865 · Python中的列表列表 2 年前 |
Klimt865 · 在Python中将数组列表转换为列表列表 2 年前 |