(六)Python基础知识-集合

1、特性

集合(set)是一个无序的不重复的元素序列。
可以使用大括号{}或者set()函数创建集合。
注意:创建一个空集合必须使用set()而不是{},与空字典有区别。

包含的操作如下表:
方法描述
add (x)为集合添加元素
update(x)为集合添加元素,x可以为列表,元组,字典、字符串(会分隔字符串进行添加,如:“张三”,会拆分成“张”、“三”两个元素进行添加。很高端)
clear()移除集合中的所有元素
discard(x)删除集合中指定的元素,元素不存在,不会报错
remove(x)删除集合中指定的元素,元素不存在,会报错KeyError
pop()随机删除一个元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在
union()返回两个集合并集
intersection()返回两个集合的交集,生成新的集合
intersection_update()两个集合的交集,集合的交并是在原集合的基础上进行的,没有生成新的集合,无返回值
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。* -切记注意返回值- *
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

2、案例

由于案例太多了,就不一一介绍,直接看完整代码吧,所有方法的调用都包含了,可以直接拷贝运行。

# 声明一个集合
mySet = set(("张三", "李四", "王五"))  # 方式1
mySet2 = {"张三", "李四", "王五"}  # 方式2
print("mySet集合原始数据:", mySet)
print("mySet2集合原始数据:", mySet2)

# 判断元素是否存在
isExist = "张三1" in mySet
print("判断元素是否存在:", isExist)

# 添加元素
mySet.add("老大")
print("添加一个元素:", mySet)

# 添加列表
mySet.update({"张三", "老大", "老二"})
print("添加一个列表:", mySet)

# 添加字符串
mySet.update("老三")
print("添加一个字符串:", mySet)

print("1、最新的mySet集合:", mySet)
print("1、最新的mySet2集合:", mySet2)

# 两个集合交集
print("两个集合交集:", mySet.intersection(mySet2))

# 注意无返回的交集,直接更改mySet集合的值,【这个操作请最后运行,不然后面的操作看不到结果】
# mySet.intersection_update(mySet2)
# print("两个集合交集:",mySet)

# 返回两个集合中不重复的元素
print("mySet与mySet2不重复的元素:", mySet.symmetric_difference(mySet2))

# 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
# 注意没有返回值,直接在mySet集合上进行更新操作【这个操作请最后运行,不然后面的操作看不到结果】
# mySet.symmetric_difference_update(mySet2)
# print("mySet与mySet2不重复的元素2:",mySet)

print("2、最新的mySet集合:", mySet)
print("2、最新的mySet2集合:", mySet2)

#  判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
print("两个集合是否包含相同的元素:", mySet.isdisjoint(mySet2))
# 判断指定集合是否为该方法参数集合的子集
print("mySet是否为mySet2的子集:", mySet.issubset(mySet2))
# 判断该方法的参数集合是否为指定集合的子集
print("mySet2是否为mySet的子集:", mySet.issuperset(mySet2))

# 返回两个集合的差集
print("mySet与mySet2的差集:", mySet.difference(mySet2))

# 直接在原来的集合中移除元素,没有返回值,多的移除少的
mySet.difference_update(mySet2)
print("mySet移除mySet2的差集:", mySet)

print("3、最新的mySet集合:", mySet)
print("3、最新的mySet2集合:", mySet2)
# 两个集合取并集
print("两个集合并集:", mySet.union(mySet2))

# 随机删除一个元素
mySet.pop()
print("随机删除一个元素:", mySet)

# 清空
mySet.clear()
print("清空集合:", mySet)

# 删除不存在的元素不报错
mySet.discard("战三")

# 删除不存在的元素报错KeyError
mySet.remove("战三")

输出:

mySet集合原始数据: {'王五', '李四', '张三'}
mySet2集合原始数据: {'王五', '李四', '张三'}
判断元素是否存在: False
添加一个元素: {'王五', '老大', '李四', '张三'}
添加一个列表: {'王五', '李四', '老大', '老二', '张三'}
添加一个字符串: {'王五', '李四', '老大', '老二', '三', '老', '张三'}
1、最新的mySet集合: {'王五', '李四', '老大', '老二', '三', '老', '张三'}
1、最新的mySet2集合: {'王五', '李四', '张三'}
两个集合交集: {'王五', '李四', '张三'}
mySet与mySet2不重复的元素: {'老大', '老二', '三', '老'}
2、最新的mySet集合: {'王五', '李四', '老大', '老二', '三', '老', '张三'}
2、最新的mySet2集合: {'王五', '李四', '张三'}
两个集合是否包含相同的元素: False
mySet是否为mySet2的子集: False
mySet2是否为mySet的子集: True
mySet与mySet2的差集: {'老二', '三', '老', '老大'}
mySet移除mySet2的差集: {'老大', '老二', '三', '老'}
3、最新的mySet集合: {'老大', '老二', '三', '老'}
3、最新的mySet2集合: {'王五', '李四', '张三'}
两个集合并集: {'王五', '李四', '老大', '老二', '三', '老', '张三'}
随机删除一个元素: {'老二', '三', '老'}
清空集合: set()
Traceback (most recent call last):
  File "E:/pythonWorkplace/venv/TestSet.py", line 80, in <module>
    mySet.remove("战三")
KeyError: '战三'

3、总结

mySet.isdisjoint(mySet2) 这个方法一定要注意:
返回值为True,说明mySet与mySet2集合没有相同的元素;
返回值为False,说明mySet与mySet2集合有至少一个以上相同的元素存在。
取交集、差集、不重复的元素集合调用带有_update()后缀的方法时,往往都是没有返回值的,而且不会新创建集合,直接在原集合中合并元素。
mySet.update(x)函数调用的时候要注意,当x为字符串的时候,会将字符串分隔成一个一个的字符,进行元素添加,如:“张三”,会拆分成“张”、“三”两个元素进行添加。很高端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值