首页 > 代码库 > set集合

set集合

不允许重复的元素出现

无序排列

可哈希


set的底层代码是用字典来实现的?

相当于一个特殊的list

In [5]: s1 = set()

In [6]: type(s1)
Out[6]: set

In [7]: s1.add("inter")

In [8]: s1.add("inter")

In [9]: s1          #添加了2个inter,但是只有一个添加进了集合。
Out[9]: {‘inter‘}

In [10]: s1.add("ac")

In [11]: s1
Out[11]: {‘ac‘, ‘inter‘}


In [19]: l1 = [1,2,3,4,5,2]

In [20]: s2 = set(l1)   #接受一个列表,转换为集合。

In [21]: s2
Out[21]: {1, 2, 3, 4, 5}

In [45]: s3
Out[45]: {2, ‘ac‘, ‘china‘, ‘inter‘}

#输出一个集合,内容是s3里面的,不同于s2的元素。s3本身不改变
In [42]: s3.difference(s2)   
Out[42]: {‘ac‘, ‘china‘, ‘inter‘}

#不输出任何信息,s3本身发生了改变。
In [48]: s3.difference_update(s2)

In [49]: s3          #就是去除了s2中的元素
Out[49]: {‘ac‘, ‘china‘, ‘inter‘}

#返回2个集合的交集,集合本身不改变
In [56]: s1.intersection(s3)
Out[56]: {‘ac‘, ‘china‘, ‘inter‘}

#修改s1为2个集合的交集,不返回任何东西
In [59]: s1.intersection_update(s3)

#返回2个集合的差集(就是2个集合不相同的元素)
In [83]: s1.symmetric_difference(s3)
Out[83]: {‘ac‘, ‘inter‘}

#2个集合没有交集,返回true。有交集返回false
In [65]: s2.isdisjoint(s3)
Out[65]: True

#s3是否是s1的子集,是返回true,不是返回false
In [71]: s3.issubset(s1)
Out[71]: True

#pop貌似是随机的移除一个元素?
In [73]: s1
Out[73]: {3, ‘ac‘, ‘china‘, ‘inter‘}

In [74]: s1.pop()
Out[74]: 3

In [75]: s1.pop()
Out[75]: ‘ac‘

In [76]: s1.pop()
Out[76]: ‘inter‘

In [77]: s1
Out[77]: {‘china‘}

#remove是移除指定的元素,没有返回值
In [78]: s2
Out[78]: {1, 2, 3, 4, 5}

In [79]: s2.remove(2)

In [80]: s2
Out[80]: {1, 3, 4, 5}









set集合