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)会报错

posted @ 2018-03-01 16:08  laosun0204  阅读(141)  评论(0编辑  收藏  举报