集合的定义:由不同元素组成、且元素排列是无序的、并且元素是不可变的(字符串、数字、元组)。
定义方法:
s={1,2,3,4,"yxz"}
print(s) #定义了一个集合,虽然都是大括号,但是用逗号隔开
s=set("hello")
print(s) #可以用系统自带的set定义集合,将每个元素都分开了,输出结果为{'e', 'h', 'l', 'o'}
a=set(["hello","hello","alex","sb"]) #注意,这里定义时往里面填的是数组,中括号,输出结果是元组中的每一个元素
print(a) #输出结果为{'sb', 'alex', 'hello'}
集合具有去重的特性
s={1,2,3,4,"yxz",1,2,3,3,3,"yxz"}
print(s) #输出结果为{1, 2, 3, 4, 'yxz'},显示了去重的特性
集合的操作
s=set([1,2,3,4,5,6]) s.add("s") #向集合中加入一个元素 print(s) s.add(3) #一样的元素,加不进去了,集合中只能由一个3 print(s)
s=set([1,2,3,4,5,6])
s.clear() #集合的清空,输出结果为set()
print(s)
s=set([1,2,3,4,5,6])
s1=s.copy() #集合的拷贝
print(s1)
s=set([1,2,3,4,5,6])
# s.pop() #删除元素,删除的是无序的
# print(s)
s.remove(5) #删除指定元素的方法,如果删除的是集合中没有的东西,系统会报错
s.discard(12) #也是删除指定的元素,但是删除的元素如果不存在,系统不会报错
集合关系与交集补集运算
p_1={"lcg","szw","zjw"}
m_1={"lcg","szw","yxz"} #构建了两个集合
#集合的关系测试
v=p_1.intersection(m_1) #intersection功能是求两个集合的交集
print(v)
v2=p_1&m_1 #用“&”符号也可以用来求交集
print(v2)
v3=p_1.union(m_1) #union是求并集 的运算
print(v3)
v4=p_1|m_1 #用|也可以实现并集的运算
print(v4)
v=p_1-m_1 #通过减号得到差集
print(v)
v1=p_1.difference(m_1) #.difference功能也是求差集
print(v1)
集合其他的内置计算:
#集合的交叉补集 :就是两个集合全集 减去 两个集合的交集 v=p_1.symmetric_difference(m_1) print(v)
v=p_1.difference(m_1)
print(v) #{'zjw'}
print(p_1) #{'szw', 'lcg', 'zjw'},虽然进行了减法运算,但是没有改变原来的值
p_1.difference_update(m_1) #这个功能是做完了减法运算,在将得到的值赋予了前面的那个集合
print(p_1)
p_1={"lcg","szw","zjw"}
m_1={"lcg","szw","yxz"} #构建了两个集合
#集合的其他内置方法
print(p_1.isdisjoint(m_1)) #.isdisjoint功能是判断两个集合是否有交集,若没有交集,则返回TRUE,本处返回false
s1={1,2,3,4}
s2={2,3,4}
v=s1.issubset(s2) #判断s1是否是s2的子集,输出为false
print(v)
v1=s1.issuperset(s2) #判断s1是否是s2的父集,输出为true
print(v1)
s1={"yxz"}
s2={2,3,4,5}
s1.update(s2) #相当于s1 s2求并集,然后在赋值给s1 给s1 进行了更新 !!!注意,update可以给集合更新多个值,可以在括号里加字符串,数字,元组,列表等
print(s1) #添加列表相当于添加了多个值,而add只可以添加一个值
集合的补充知识
s=frozenset("hello") #之前的定义方法是定义一个可变的集合,而这种方法定义的是不可变集合,不可以添加或者删除、更改 print(s)
name=["alex","yxz","ymz","yxz"]
s=set(name) #将列表变成集合
print(s)
names=list(s) #将集合重新变成列表形式
print(names)
浙公网安备 33010602011771号