(四)集合

集合三要素

无序 

去重(必须是不同元素) 

元素可hash(必须是不可变类型:数字,字符串,元组)


集合基本操作

其他数据类型转换为集合(会自动去重)

s = set('hello')
print(s)

s = set(['aa', 'bb', 'cc','aa'])
print(s)

结果:{'l', 'e', 'o', 'h'}
   {'aa', 'bb', 'cc'}

添加元素set.add(一个元素,已经有的元素无法添加,但不报错)

s={1,2,3,4,5,6}
s.add('3')
print(s)
s.add(3)
print(s)

结果:{1, 2, 3, 4, 5, 6, '3'}
   {1, 2, 3, 4, 5, 6, '3'}

添加元素set.update(多个元素,参数只要是可迭代类型)

s2={1,2,3}
s2.update([1,3,5,7])
print(s2)

结果:{1, 2, 3, 5, 7}

删除元素:三种不同的方式

①随机删除 set.pop()

②指定元素删除,不存在会报错 set.remove('hello')

③指定元素删除,不存在不会报错 set.discard('hello')

④清空集合 set.clear(),有别于删除集合

 


集合关系运算

求交集 : s1.intersection(s2)或s1&s2

求并集 : s1.union(s2)或s1|s2

求差集 : s1.difference(s2)或s1-s2(s1有的而s2没有)

求交叉补集 : s1.symmetric_difference(s2)或s1^s2(并集 - 交集)

s1.isdisjoint(s2):s1和s2是不是没有交集,是的话返回False

s1={1,2}
s2={2,3,5}
print(s1.isdisjoint(s2))

结果:False

s1.issubset(s2) : s1是不是s2的子集,是的话返回Ture

s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))
print(s2.issubset(s1))

结果:True False

s1.issuperset(s2) : s1是不是s2的父集,是的话返回Ture


list利用集合去重

li = ['aa','bb','cc','bb']
li = list(set(li))
print(li)

结果:['aa', 'bb', 'cc']

总结:

集合是一个无序的,不重复的数据组合,它有两个主要的用途:

1.去重,把一个列表变成集合,就自动去重了

2.关系测试,测试两组数据之间的交集、差集、并集等关系

原文地址:https://www.cnblogs.com/xulan0922/p/9111731.html