序言:
集合中各元素间是无序的,相同元素在集合中唯一存在。即 集合是无序组合,它没有索引和位置的概念,但可变集合中的元素是可以动态增加或删除的。
集合应用场景:
去重:如列表 去重。
关系测试:判断数据是否存在 交集,并集,差集 等关系。
集合的类型:
可变集合 —— set
不可变集合 —— frozenset
注:本文重点讨论的是可变集合set
————————————————
python中可变集合set和不可变集合frozenset的区别链接
1.0 set()函数
描述:可以将其它的组合数据类型转化为可变集合类型(或将不可变的集合类型frozenset转变为可变的集合类型set),返回一个无重复元素且排序任意的可变集合。
语法: set() -> new empty set object 返回一个空集合(该集合可变)
set(iterable) -> new set object 返回一个新集合(该集合可变)
iterable —— 要转换的组合数据类型。
注:s = {} 生成的是字典类型,而不是集合类型。
程序示例①:
s1 = set() #创建一个空集合。
l = [1.23,"a"] #列表类型
d = {1:"a",2:"b"} #字典类型
a = (1,2,"b") #元组类型
s = "厉害了,我的国" #字符串
#将列表,字典,元组,字符串转化为集合
s2 =set(s)
s3=set(l)
s4=set(d)
s5=set(a)print(s1)print(s2)print(s3)print(s4)print(s5)
程序运行结果:
set()
{'了', '的', '厉', '害', '国', ',', '我'}
{'a', 1.23}
{1, 2}
{1, 2, 'b'}
程序示例②:
d = {} #创建的是字典类型,空字典
s = set() #创建可变空集合
a = {1,2,3,"a"} #默认为可变集合
b = set("1,2,3") #与a语句等效
c1 = frozenset() #创建空的不可变集合,该集合不能添加任何元素。
c2 = frozenset("1,2,3") #不可变集合,集合中元素不能增加或删除。
print(type(d),type(s),type(a),type(b),type(c1),type(c2))
f= frozenset(a) #将可变集合a转换为不可变集合f
print(f,type(f))
s1= set(c2) #将不可变集合c2转换为可变集合s1
print(s1,type(s1))
程序运行结果:
frozenset({'a', 1, 2, 3}) {'2', '3', ',', '1'}
2.0 add()函数
描述:如果集合s中不存在元素x,则将元素x添加到集合s中。
语法:s.add(x)
x —— 要添加的元素。集合s已经存在元素x,也不会报错。
程序示例:
s = {1,2,"a"}
s.add("ab") #将字符串"ab"添加到集合s中
s.add(1) #集合s已存在元素 1 ,但不会报错
s.add("z") #将单字符"z"添加到集合s中
print(s)
程序运行结果:
{'a', 1, 2, 'z', 'ab'}
3.0 clear()函数
描述:删除集合s中的所有元素。
语法:s.clear()
程序示例:
s = {1,2,3,"a","bn"}
s.clear() #删除集合s所有元素
print(s)
程序运行结果:
set()
4.0 copy()函数
描述:复制生成一个新的集合。
语法 s.copy()
程序示例:
s = {1,2,3,"a","bc"}
s1 = s.copy() #复制集合s
s.add(789) #向原集合添加元素 789
s1.add("opq") #向复制集合s1添加元素 “opq”
#结果都互不干扰
print(s)
print(s1)
程序运行结果:
{1, 2, 3, 'a', 789, 'bc'}
{1, 2, 3, 'a', 'opq', 'bc'}
5.0 discard()函数
描述:移除集合s中的value元素。若value元素存在,则移除,不存在也不报错。
语法:s.discard(value)
value —— 要删除的元素
程序示例:
s = {1,2,3,4,5,"a","ab","h"}
s.discard(1) #移除元素 1
s.discard("ab") #移除元素 "ab"
s.di