Python集合

编程 · 2023-08-14 · 151 人浏览

集合存储原理

data = set()
data.add('a')
print(data) # 结果为:{'a'}
  • 利用哈希函数将“a”转换成一个数值,例如:1280120246861766981
  • 取余数:1280120246861766981 % 6 = 3
  • 将“a”放在哈希表的3索引位置

添加元素

data = {'a', 'b', 'c'}
data.add('d')
print(data) # 结果为:{'a', 'b', 'c', 'd'}

update加入一个新的集合:

data = {"a", "b", "c"}
data.update("d")
print(data) # 结果为:{'b', 'd', 'a', 'c'}

删除元素

data = {'a', 'b', 'c'}
data.discard('b')
print(data) # 结果为:{'a', 'c'}

交集

data = {'a', 'b', 'c'}
data2 = {'w', 'b', 'd'}
data3 = data & data2
print(data3) # 结果为:{'b'}

并集

data = {'a', 'b', 'c'}
data2 = {'w', 'b', 'd'}
data3 = data | data2
print(data3) # 结果为:{'w', 'b', 'c', 'd', 'a'}

差集

data = {'a', 'b', 'c'}
data2 = {'w', 'b', 'd'}
data3 = data - data2
print(data3) # 结果为:{'c', 'a'}

对称差集

并集减去交集。

novels_1 = {'飞狐外传', '雪山飞狐', '连城诀', '天龙八部'}
novels_2 = {'鹿鼎记', '天龙八部', '书剑恩仇录', '神雕侠侣'}

print(novels_1 ^ novels_2)
print(novels_2 ^ novels_1)

输出结果如下:

{'飞狐外传', '鹿鼎记', '连城诀', '雪山飞狐', '书剑恩仇录', '神雕侠侣'}
{'飞狐外传', '连城诀', '鹿鼎记', '雪山飞狐', '书剑恩仇录', '神雕侠侣'}

isdisjoint

判断两个集合是否包含相同的元素,如果没有返回true,否则返回false。

data = {"a", "b", "c"}
data2 = {"w", "b", "d"}
result = data.isdisjoint(data2)
print(result) # False
Python
Theme Jasmine by Kent Liao