day4_集合操作
集合可以去掉重复的,s = set(),这种形式是集合,集合是无序的,可以把所有的可迭代对象转为集合
xn = ['ggy', 'agr', 'hello']
python = ['ggy', 'ssj', 'zy']
s_xn = set(xn)
s_python = set(python)
print(s_xn.union(s_python)) # 取并集方法一
print(s_xn | s_python) # 取并集方法二
print(s_xn.intersection(s_python)) # 取交集方法一
print(s_xn & s_python) # 取交集方法二
集合不能按照下标取值,会报错
b = {1, 2, 3, 4, 5, 1, 4}
print(b[0]) # 报TypeError: 'set' object is not subscriptable错误,因为集合是无序的
集合里传入列表和字典都会报错,因为它俩是可变的,非哈希类型,传入元组和字符串不会报错
set1 = {[1, 2]} # 报TypeError: unhashable type: 'list'
print(set1)
set2 = {{'a': 97, 'b': 98}} # 报TypeError: unhashable type: 'dict'
print(set2)
set3 = {1, 1.0}
print(set3) # 打印出{1}
取对称差集
print(s_xn.symmetric_difference(s_python)) # 把两个集合中相同的元素去掉方法一
print(s_xn ^ s_python) # 把两个集合中相同的元素去掉方法二
print(s_xn.issubset(s_python)) # 判断前面这个集合是不是在后面这个集合里面,了解一下
print(s_xn.issuperset(s_python)) # 判断前面这个集合是不是包含后面这个集合,了解一下
print(s_xn.isdisjoint(s_python)) # 判断两个集合是否有交集,没有交集返回True,了解一下
集合的添加操作:
第一种方式:s_xn.add('abc') ,通过此方式可以在集合里添加
第二种方式:s_xn.update(),括号里可以传入一个list、tuple、字符串都可以,把重复的去掉
s_xn = {'ggy', 'agr', 'hello'}
s_xn.update(['abc', 'xyz']) # 括号里可以传入一个list,把重复的去掉
s_xn.update(('abc', 'xyz')) # 括号里可以传入一个tuple,把重复的去掉
s_xn.update('abc') # 括号里可以传入一个字符串,把重复的去掉,字符串以单个字符的形式展示
print(s_xn)
集合的删除操作:
第一种方式:s_xn.remove('abc'),删除集合里的元素,没有该元素会报错
s_xn.remove('abc')
print(s_xn)
第二种方式:s_xn.pop(),随机删除一个元素,并返回剩下的元素
s_xn.pop()
print(s_xn)
第三种方式:s_xn.discard('abc'),如果删除的元素存在就删除并返回剩下的元素,不存在返回原始的集合
s_xn.discard('abc')
print(s_xn)
不可变的集合用frozenset(),如num1 = frozenset((1, 2, 3)),num1.add(4)会报错