比较两个python列表的复杂性顺序是什么?

比较两个python列表的复杂性顺序是什么?,python,Python,假设列表仅包含哈希对象 顺便说一句,我不确定这个问题是否有意义,因为当涉及到复杂性和学术内容时,我是一个彻头彻尾的傻瓜。如果两个列表都有长度n,那么比较两个列表的复杂性是O(n),如果两个列表有不同的长度,那么比较的复杂性是O(1)。这在很大程度上取决于“比较”一词的含义 如果你比较是否相等,@Sven Marnach的答案适用:O(n)表示相同的长度,O(1)表示不同的长度 如果您比较多个列表,使用散列函数可以帮助您:对于不同的列表(使用不同的散列),散列函数为O(1);对于具有相同散列的列表

假设列表仅包含哈希对象


顺便说一句,我不确定这个问题是否有意义,因为当涉及到复杂性和学术内容时,我是一个彻头彻尾的傻瓜。

如果两个列表都有长度n,那么比较两个列表的复杂性是O(n),如果两个列表有不同的长度,那么比较的复杂性是O(1)。

这在很大程度上取决于“比较”一词的含义

如果你比较是否相等,@Sven Marnach的答案适用:O(n)表示相同的长度,O(1)表示不同的长度

如果您比较多个列表,使用散列函数可以帮助您:对于不同的列表(使用不同的散列),散列函数为O(1);对于具有相同散列的列表,散列函数可能仍然为O(n),因为散列值可能会冲突,您必须进行真正的比较。这可以通过使用多个散列函数来缓解,因此冲突的概率大大降低

注意,仍然需要O(n)来计算长度为n的列表的哈希值,因此这里没有免费的午餐

如果您想比较两个列表的相似性,您可能需要在简单的情况下时间是二次的,但可以通过延迟计算使其线性化,可能需要大量的内存开销

如果您想计算从一个列表到另一个列表所要做的更改的完整列表(),在维基百科中提到的最佳实现中,它是二次的。

Python wiki中的条目应该对此有所帮助。