上QQ阅读APP看书,第一时间看更新
5.5 集合
上一节介绍了Python中的字典,Python中的字典是对数学中映射概念支持的直接体现。接下来将讲解一个和字典非常相似的对象:集合。
示例如下:
>>> student={} >>> print(f'student对象的类型为:{type(student)}') student对象的类型为:<class 'dict'> >>> number={1,2,3} >>> print(f'number对象的类型为:{type(number)}') number对象的类型为:<class 'set'>
由输出结果可以看到,这里出现了一个新的类型set。
在Python中,用花括号括起一些元素,元素之间直接用逗号分隔,这就是集合。集合在Python中的特性可以概括为两个字:唯一。
示例如下:
>>> numbers={1,2,3,4,5,3,2,1,6} >>> numbers {1, 2, 3, 4, 5, 6}
由输出结果可以看到,set集合中输出的结果自动将重复数据清除了。
需要注意的是,集合是无序的,不能通过索引下标的方式从集合中取得某个元素。例如:
由输出结果可以看到,在集合中使用索引下标时,执行报错,错误提示为:集合对象不支持索引。
5.5.1 创建集合
创建集合有两种方法:一种是直接把元素用花括号({})括起来,花括号中的元素之间用英文模式下的逗号(,)分隔;另一种是用set(obj)方法定义,obj为一个元素、一个列表或元组。
例如:
>>> numbers={1,2,3,4,5} >>> print(f'numbers变量的类型为:{type(numbers)}') numbers变量的类型为:<class 'set'> >>> numbers {1, 2, 3, 4, 5} >>> name=set('abc') #一个元素,仔细观察输出结果 >>> name {'a', 'b', 'c'} >>> print(f'name变量的类型为:{type(name)}') name变量的类型为:<class 'set'> >>> students=set(['小萌','小智']) #一个列表 >>> students {'小萌', '小智'} >>> print(f'students变量的类型为:{type(students)}') students变量的类型为:<class 'set'> >>> stu=set(('小萌','小智')) #一个元组 >>> stu {'小萌', '小智'} >>> print(f'stu变量的类型为:{type(stu)}') stu变量的类型为:<class 'set'>
由输出结果看到,集合的创建方式是多种多样的。
5.5.2 集合方法
集合中提供了一些集合操作的方法,如添加、删除、是否存在等方法。
1.add()方法
在集合中,使用add()方法为集合添加元素。看如下示例:
>>> numbers=set([1,2]) >>> print(f'numbers变量为:{numbers}') numbers变量为:{1, 2} >>> numbers.add(3) >>> print(f'增加元素后,numbers变量为:{numbers}') 增加元素后,numbers变量为:{1, 2, 3}
由输出结果可以看到,使用add()方法,集合可以很方便地增加元素。
2.remove()方法
在集合中,使用remove()方法可以删除元素。例如:
>>> students=set(['小萌','小智','小张']) >>> print(f'students变量为:{students}') students变量为:{'小萌', '小张', '小智'} >>> students.remove('小张') >>> print(f'删除元素小张后,students变量为:{students}') 删除元素小张后,students变量为:{'小萌', '小智'}
由输出结果可以看到,集合中可以使用remove()方法删除元素。
3.in和not in
和字典及列表类似,有时也需要判断一个元素是否在集合中。可以使用in和not in判断一个元素是否在集合中,in和not in的返回结果是True或False。例如:
>>> numbers={1,2,3,4,5} >>> 2 in numbers True >>> 2 not in numbers False >>> 'a' in numbers False >>> 'a' not in numbers True
由输出结果可以看到,in和not in是互为相反的。
在实际项目应用中,集合的使用并不是很多,但集合的用处较大,使用时的效率也较高。