Python入门(8):Python序列结构-集合

集合

Python 中的集合(set)与数学中的集合概念类似,也是用于保存不重复的元素。它有可变集合(set)和不可变集合(fozenset)两种。其中,本节所要介绍的 set 集合是无序可变序列,而另一种在本书中不做介绍。在形式上,集合的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔。集合最好的应用就是去重,因为集合中的每个元素都是唯一的。Python 中的集合(set)对应C#的HashSet<T>或者接口ISet

创建集合

使用{}创建,而字典{key:value} 也可以认为是集合Set的一种.

使用set()函数创建

setName=set(iteration)

setName:表示集合名称;

iteration:表示要转换为集合的可迭代对象,可以是列表、元组、range 对象等。另外,也可以是字符串,如果是字符串,返回的集合将是包含全部不重复字符的集合。

在创建空集合时,只能使用set()实现,而不能使用一对大括号{}实现.

这是因为在 Python,直接使用一对大括号“{}”表示创建一个空字典。

添加和更新元素

添加元素add()

setName.add(obj)

del 命令将删除整个集合

pop()或者remove()将移除指定的元素

clear()将清空集合

使用del命令将删除集合,集合变量将不存在.此时不能使用len(集合),遍历,打印等操作

集合的交集、并集、差集

集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用“&”符号;进行并集运算时使用“|”符号:进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。

交集:获取两个集合的相同元素

并集:合并两个集合,重复元素的只保留一个

差集A-B:集合A中的元素,删除掉在B中的元素

差集B-A:集合B中的元素,删除掉在A中的元素

对称差集:并集集合中移除所有重复元素[并集-交集]

演示程序

SetSnake.py

#集合
'''
Python 中的集合(set)与数学中的集合概念类似,也是用于保存不重复的元素。
它有可变集合(set)和不可变集合(fozenset)两种。其中,本节所要介绍的 set 集合是无序可变序列,而另一种在本书中不做介绍。
在形式上,集合的所有元素都放在一对大括号“{}”中,两个相邻元素间使用逗号“,”分隔。
集合最好的应用就是去重,因为集合中的每个元素都是唯一的。
Python 中的集合(set)对应C#的HashSet<T>或者接口ISet
list使用[]
tuple使用()
dict使用{key:value}
set使用{}
'''
#定义集合时,会自动去除重复元素,不会抛出异常
gjqt1={"百里屠苏","风晴雪","红玉","方兰生","襄铃","百里屠苏"}
print("打印集合:",gjqt1,".元素个数为:",len(gjqt1),"类型:",type(gjqt1))
#定义字典时,如果键key重复,则后续的元素自动覆盖前面的元素
gjqt3={1:"云无月",2:"北洛",1:"岑缨"}
print("打印字典:",gjqt3,".元素个数为:",len(gjqt3),"类型:",type(gjqt3))
gjqt1=["百里屠苏","风晴雪","红玉","方兰生","襄铃","百里屠苏"]
print("打印列表:",gjqt1,".元素个数为:",len(gjqt1),"类型:",type(gjqt1))
gjqt1=("百里屠苏","风晴雪","红玉","方兰生","襄铃","百里屠苏")
print("打印元组:",gjqt1,".元素个数为:",len(gjqt1),"类型:",type(gjqt1))
print("------测试字符串自动去重------")
setString=set("不死族,死亡骑士,死神和诅咒将降临")
print(setString)
print("------测试集合的添加和更新------")
setTest={"百里屠苏","风晴雪","红玉","方兰生","襄铃"}
setTest.add("尹千觞")
print("打印集合:",setTest,".元素个数为:",len(setTest))
setTest.add("百里屠苏")
print("打印集合:",setTest,".元素个数为:",len(setTest))
setTest.remove("襄铃")
print("使用remove()移除元素,如果元素不存在将抛出异常.\n打印集合:",setTest,".元素个数为:",len(setTest))
setTest.pop()
print("使用pop()移除元素时,如果集合为空将抛出异常.\n打印集合:",setTest,".元素个数为:",len(setTest))
setTest.clear()
print("使用clear()清空.\n打印集合:",setTest,".元素个数为:",len(setTest))
del setTest
print("使用del命令将删除集合,集合变量将不存在.此时不能使用len(集合),遍历,打印等操作")
print("------集合的交集,并集,差集------")
roleA={"百里屠苏","风晴雪","红玉","方兰生","襄铃","尹千觞"}
roleB={"百里屠苏","欧阳少恭","巽芳","尹千觞"}
print("角色A为:",roleA)
print("角色B为:",roleB)
print("交集:",roleA & roleB)
print("并集:",roleA | roleB)
print("差集[A-B]:",roleA - roleB)
print("差集[B-A]:",roleB - roleA)
print("对称差集[就是:并集-交集]:",roleA ^ roleB)

运行如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯内科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值