Python“;在;操作员速度

Python“;在;操作员速度,python,time,size,in-operator,Python,Time,Size,In Operator,python中的操作符的速度与iterable的长度成正比吗 所以 A>B吗?是以下方面的总结: list - Average: O(n) set/dict - Average: O(1), Worst: O(n) 有关更多详细信息,请参阅。对此没有一般性的答案:这取决于a的类型,尤其是b的类型。例如,如果b是一个列表,那么是,中的需要最坏的时间O(len(b))。但是,例如,如果b是一个dict或set,那么in中的将采用预期的案例时间O(1)(即,恒定时间) 关于“A>B吗?”,您没有定义

python中的
操作符的速度与iterable的长度成正比吗

所以

A>B吗?

是以下方面的总结:

list - Average: O(n)
set/dict - Average: O(1), Worst: O(n)

有关更多详细信息,请参阅。

对此没有一般性的答案:这取决于
a
的类型,尤其是
b
的类型。例如,如果
b
是一个列表,那么是,
中的
需要最坏的时间
O(len(b))
。但是,例如,如果
b
是一个dict或set,那么
in
中的
将采用预期的案例时间
O(1)
(即,恒定时间)


关于“A>B吗?”,您没有定义
A
B
。如上所述,
语句中的哪个
语句运行得更快,没有一般性的答案。

因此,如果我需要检查dict中是否存在作为键的字符串,则需要O(1)。但是如果我需要看一个字符串是否存在于列表中,那么O(n)对吗?或者即使我有一组字符串和一组字符串,集合中的x将比列表中的x快,对吗?什么时候会发生最坏的情况?我认为当所有键在dicts中具有相同的哈希值,集合在CPython中具有非常相似的实现时-它们都基于哈希代码。最坏情况的行为从未出现在故意设计用来激发它的代码之外,但您需要对统计数据有一些理性的信念;-)如果你想激发它,那么,例如,用一个返回常量的
\uuuuuuuuuuuuuuuuuuuuuu散列
方法定义你自己的类。
list - Average: O(n)
set/dict - Average: O(1), Worst: O(n)