定义集合
定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key.
特性:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于结合中单个值,
定义集合
s={1,2,3,4,5,'s',('s',1),1}
# 集合支持类型 int str tuple
# 输出结果:
# {1,2,3,4,5,'s',('s',1)}
s2=set(['lcg','szw','hellowrd']}
# 输出结果:
# {'lcg','szw'.'hellowrd'}
1.交集运算
python_1=['lcg','szw','zjw']
liunx_1=['lcg','szw']
p_s=set(python_1)#将列表转换为set
l_s=set(liunx_1)
#
print(p_s.intersection(l_s))
print(p_s&l_s)
2.求并集
python_1=['lcg','szw','zjw']
liunx_1=['lcg','szw']
p_s=set(python_1)#将列表转换为set
l_s=set(liunx_1)
#
print(p_s.union(l_s))
print(p_s|l_s)
3.求差集
python_1=['lcg','szw','zjw']
liunx_1=['lcg','szw','sd']
p_s=set(python_1)#将列表转换为set
l_s=set(liunx_1)
#
# 左边集合跟右边集合对比,取出不一样的值。
# 例1
print(p_s-l_s)
# 输出:'zjw'
# 例2
print(l_s-p_s)
# 输出:'sd'
print(p_s.difference(l_s))
# difference 差异不同
4.交叉补集
python_1=['lcg','szw','zjw']
liunx_1=['lcg','szw','sd']
p_s=set(python_1)#将列表转换为set
l_s=set(liunx_1)
#
# 去除两个集合中相同的值,得到不一样的值。
#
print(p_s.symmetric_difference(l_s))
# 输出:{'zjw','sd'}
print(p_s^l_s)
# 输出:{'zjw','sd'}
5.求差集且更新
python_1=['lcg','szw','zjw']
liunx_1=['lcg','szw','sd']
p_s=set(python_1)#将列表转换为set
l_s=set(liunx_1)
p_s.difference_udpate(l_s)
# 输出:{"zjw"}
6.不可变集合
s=frozenset('hello')
# 此定义无法更新删除
函数:
# isdisjoint
""" Return True if two sets have a null intersection. """
"""如果两个集合的交集为空,则返回true"""
# 例1
s1={1,2}
s2={3,4}
print(s1.isdisjoint(s2))
# 输出 True
# 例2
s1={1,2}
s2={2,3,4}
print(s1.isdisjoint(s2))
# 输出 False
-------------------------------------------------------
# issubset
""" Report whether another set contains this set. """
""" 报告另一个集合是否包含此集合。 """
s1={1,2}
s2={1,2,3}
# 例1
print(s1.issubset(s2))
# 输出 True
# 表示s1 是s2的子集。s1在s2里面
# 例2
s1={1,3}
s2={1,2,3}
print(s1.issubset(s2))
# 输出 True
# 表示s1 是s2的子集。s1在s2里面
# 例3
s1={1,4}
s2={1,2,3}
print(s1.issubset(s2))
# 输出 False
-------------------------------------------------------
程序优化方法:
# 列表集合去重,但是会失去原有的排序
name=[1,3,3,5]
name=list(set(name))
# 输出: [1,3,5]