1、set集合
set集合是一个无序的不重复元素序列,集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
2、集合的遍历
我们已经知道集合中的元素不会重复,可以猜测的到应该是使用哈希值进行存储的。这点可以非常轻松的验证。我们使用整数来进行验证,因为整数的哈希值就是他们本身。
我们新建一个 set 集合,在里面依次插入1-5,打印输出 x_set 的内容,然后再插入一个 32 并打印结果,最后再插入一个39,打印结果,我们分别得到了三次 set 集合中的内容。
x_set = set()
for i in range(1, 6):
x_set.add(i)
print("x_set:")
for x in x_set:
print(x, end="\t")
print()
print("insert 32:")
x_set.add(32)
for x in x_set:
print(x, end="\t")
print()
print("insert 39:")
x_set.add(39)
for x in x_set:
print(x, end="\t")
输入结果:
结论:
1、第一次的打印结果应该是 1 到 5 ,是按照正常的顺序输出的结果。
2、在插入了 32 之后,它被插入到了 1 的前面,我们记作 0 号位置。在插入 32 时,hash 表的长度会进行增加,按照 2^n 向上取整,表的实际长度延伸到了 32 ,所以 32 会被插入到 0 号位置。
3、在插入 39 时,39 对 32 取余的结果是 7 ,所以会在 5 的后面。
4、假如这时我们插入一个38,则 38 会排在 39 的前面,这点可以自行进行验证。
综上可以看到,输出的结果和我们想的是一样的,符合我们的预期猜测。