第九章 python3集合set
截止今天,我们已经了解了Python中六大数据类型中的数字(number),字符串(string),列表(list),元组(tuple),字典(dict);
今天我们来了解下最后一种数据类型:
集合set,它是一种无序不重复的序列,使用花括号{ }或者set()方法来创建,元素之间用逗号(,)隔开。
1、创建集合
创建集合set,格式如下:
set = {value1,value2,...}
或
set = set(value)
注意:创建一个空集合必须用set()而不是花括号{ },因为花括号{ }是用来创建一个空字典的,实例代码:
集合set可以创建一个无序不重复元素集,用来确认逻辑关系,删除重复数据,还可以计算交集、差集、并集等;
set(iterable) :参数是一个可迭代对象,比如:字符串,列表,元组,字典等
如果将一个字符串单独做为参数时,set()将会拆分每一个单字符串作为集合的元素,并不是创建只含一个元素的集合。
2、添加元素
实例代码:
3、更新元素
实例代码:
注意:add()和update(),如果添加/更新的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
4、删除元素
4.1pop() 删除哪个元素是不确定的
实例代码:
4.1删除指定的元素
remove() discard(),实例代码:
注意:remove()和discard()的区别:
remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
4.3del语句删除整个集合set对象
实例代码:
4.4清空集合所有元素
实例代码:
5、判断元素是否存在
用in , not in ,实例代码:
6、集合set推导式
实例代码:
多个集合set间的运算:==,!=,<,<=,>,>=,^,&,|,- ,
实例代码:
7、集合set常用方法
前面已经了解了一些集合的方法了,下面再补充几个;
7.1复制集合copy()
实例代码:
我们发现copy()后,两个集合对象的内存地址是不一样的,说明它们的指向不同,修改时互不影响。
difference_update() 和difference() 的区别:difference()返回一个移除相同元素的新集合,而 difference_update()是直接在原来的集合中移除元素,没有返回值。
issubset() 和 issuperset区别在于以哪个集合为参照,仅此而已。
集合set()可以过滤列表list中重复的元素,也可以用作类型转换,实例代码:
8、补充知识
set是可变集合,frozenset是不可变集合。
frozenset(iterable) 参数为可迭代对象,可以把列表,字典,元组,字符串 可变集合 转化为不可变集合;
frozenset()因为是不可变集合,所以它不像set(),是没有添加,更新,删除等方法的。