鲁班 python 集合 set

定义集合

定义:由不同元素组成的集合,集合中是一组无序排列的可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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值