为什么在Python中向集合添加元素比向列表添加元素需要更长的时间?我创建了一个循环,迭代了1000000个元素并将其添加到列表和集合中。列表通常需要大约10秒钟,而集合需要大约20秒钟。
这两个操作的时间复杂度都是O(1) 平摊的。
将元素添加到列表中的系数较低,因为它不需要先对元素进行哈希,也不需要检查/处理哈希冲突。
在将x
加入到set
中时,Python 需要首先计算hash(x)
,因为保持所有元素的哈希值是集合能够快速实现O(1)成员检查(相比于列表的O(n)成员检查)的原因。