Python基础【第九篇】:基础数据类型(集合)
集合
基本定义
Python 还包含了一个数据类型 —— set (集合)。集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差,sysmmetric difference(对称差集)等数学运算。大括号或set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {} 。后者用于创建空字典。
创建集合
>>> player = {'kobe','james','harden','kobe','james','jordan'} >>> #演示去重功能>>> print(player) {'james', 'harden', 'jordan', 'kobe'} >>> set('abcdefab') {'b', 'a', 'c', 'e', 'f', 'd'} >>> set(['kobe','james','jordan','kobe']) {'jordan', 'james', 'kobe'}
使用set()方法就相当于将别的序列转换为集合。如果里面是一个字符串,那么就将字符串看做序列转换,将单个字符作为集合的元素。
集合的运算
>>> a = set('abcfdgsrgsabd') >>> b = set('polkkijfadfvd') >>> a - b #包含在a中却不包含在b中的元素 {'s', 'c', 'b', 'g', 'r'} >>> a & b #a 与 b 公共的元素 {'d', 'f', 'a'} >>> a | b #a 与 b 总共包含的元素 {'b', 'p', 'r', 'o', 'l', 'v', 'k', 'a', 'c', 'f', 'g', 'd', 's', 'i', 'j'} >>> a ^ b #不同时包含于a ,b 的元素 {'b', 'p', 'r', 'o', 'l', 'v', 'k', 'c', 'i', 's', 'g', 'j'}
集合元素的增加
使用方法set.add()
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>> a = {'kobe','james','jordan'} >>> a.add('马云') >>> a {'马云', 'james', 'jordan', 'kobe'}
此方法不能将列表,元组等作为参数,而set.update()可以,且参数可以有多个,使用逗号隔开。
>>> a = {'kobe','james','jordan'} >>> a.add('harden') >>> a {'james', 'harden', 'jordan', 'kobe'} >>> a.update(['wade','john']) >>> a {'kobe', 'james', 'john', 'jordan', 'wade', 'harden'} >>> a.update([1,2],'tom') >>> a {1, 2, 'kobe', 't', 'o', 'james', 'john', 'jordan', 'm', 'wade', 'harden'}
字符串将视为一个序列,添加到集合当中的是字符串中的字符。
集合元素的移除
使用set.remove()函数
将元素 x 添加到集合 s 中移除,如果元素不存在,则会发生错误。
如下例:
>>> set_example = {1,2,3,4} >>> set_example.remove(1) >>> set_example {2, 3, 4} >>> set_example.remove(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 1
但是如果使用方法set.discard()则不会发生上述错误
>>> set = {1,2,3,'马云'} >>> set.discard('马云') >>> set {1, 2, 3} >>> set.discard('马云') >>> set {1, 2, 3}
两个删除的方法均无返回值。
我们也可以随机删除一个元素。使用set.pop()的方法,此方法会返回删除的元素。
>>> set = {1,2,3,'马云'} >>> set.pop() 1 >>> set {2, 3, '马云'} >>> set.pop() 2 >>> set {3, '马云'}
清空集合中的元素也可使用set.clear()的方法。
>>> set = {1,2,3,'马云'} >>> set.clear() >>> set set()