学习python第七天

发布时间:2024年01月18日

集合

集合(set)是一个无序的不重复元素序列。集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。可以使用大括号?{ }?创建集合,元素之间用逗号?,?分隔, 或者也可以使用?set()?函数创建集合。

#直接使用大括号
a = {"sdadsa","adasadad"}
#使用set方法
b = set("sdadsa")
#使用集合推导式
c = {a for a in "sasd"}
print(c)
print(type(c))
print(type(a))
print(b)
print(type(b))

因为集合是个无序的序列,所以我们只能通过迭代的方式获取他里面的元素,不能使用下标

b  ={a for a in "health"}
print(b)

?s.copy():返回s集合的一个浅拷贝

a = set("asdfg")
n = a.copy()
print(a,n)


s.isdisjoint(other):如果s集合中没有与other容器存在共同的元素,那么返回True,否则返回False

a = set("asdfg")
print(a)
b = a.isdisjoint('pyhton')
print(b)


s.issubset(other):如果s集合是other容器的子集(注1),那么返回True,否则返回False

a = set("asdfg")
print(a)
b = a.issubset('asdf')
print(b)


s.issuperset(other):如果s集合是other容器的超集(注2),那么返回True,否则返回False

a = set("asdfg")
print(a)
b = a.issuperset('asdf')
print(b)


s.union(*others):返回一个新集合,其内容是s集合与others容器的并集(注3)

a = set("asdfg")
print(a)
b = a.union('qwer')
print(b)


s.intersection(*others):返回一个新集合,其内容是s集合与others容器的交集(注4)

a = set("asdfg")
print(a)
b = a.intersection('as')
print(b)


s.difference(*others):返回一个新集合,其内容是存在于s集合中,但不存在于others容器中的元素(注5)

a = set("asdfg")
print(a)
b = a.difference('as')
print(b)


s.symmetric_difference(other):返回一个新集合,其内容是排除掉s集合和othr容器中共有的元素后,剩余的所有元素

a = set("asdfg")
print(a)
b = a.symmetric_difference('as')
print(b)

注1:对于两个集合A、B,如果集合A中任意一个元素都是集合B中的元素,我们就说这两个集合有包含关系,称集合A为集合B的子集(Subset)。
注2:对于两个集合A、B,如果集合B中任意一个元素都是集合A中的元素,我们就说这两个集合有包含关系,称集合A为集合B的超集(Superset)。
注3:对于两个集合A、B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集(Uion)。
注4:对于两个集合A、B,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集(Intersection)。
注5:对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集(Difference)。
注6:others参数表示支持多个容器(参数类型可以是集合,也可以是序列);other参数则表示单个容器。

我们也可以使用运算符来求集合的各种集合(注意:只能两个集合之间比较)

<= 、?<:左边的集合是右边集合的子集

> 、>=:左边的集合是右边集合的超集

a = set("asdfg")
print(a)
print(a >= set("asdf"))
print(a > set("asd"))
print(a <= set("asdfg"))
print(a < set("asdfgh"))

|:求并集

a = set("asdfg")
print(a)
#并集
print(a | {1,2,3} | set("dasd"))

&:求交集

a = set("asdfg")
print(a)
#交集
print(a & set("dasd"))

-:求差集

a = set("asdfg")
print(a)
#差集
print(a - set("dasd"))

^:对称差集

a = set("asdfg")
print(a)
#差集
print(a ^ set("qwer"))

集合也分为可变集合和不可变集合

使用set方法生成的集合是可变的集合,使用frozenset方法生成的集合是不可变集合

上边的那些方法没有修改集合所以同时使用雨frozenset方法生成的集合

下边的这些方法只适用于set方法生成的可变集合:

update:用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

intersection_update()?:用于获取两个或更多集合中都重叠的元素,即计算交集。

intersection_update()?方法不同于?intersection()?方法,因为?intersection()?方法是返回一个新的集合,而?intersection_update()?方法是在原始的集合上移除不重叠的元素。

a = set("asdfg")
print(a)
a.intersection_update("as")
print(a)

difference_update() :用于移除两个集合中都存在的元素。

difference_update()?方法与?difference()?方法的区别在于?difference()?方法返回一个移除相同元素的新集合,而?difference_update()?方法是直接在原来的集合中移除元素,没有返回值。

a = set("asdfg")
print(a)
a.difference_update("as")
print(a)

symmetric_difference_update() :移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

a = set("asdfg")
print(a)
a.symmetric_difference_update("askl")
print(a)

add:用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。

a = set("asdfg")
print(a)
a.add("askl")
print(a)

remove和discard都是删除指定元素,区别是删除集合中不存在的元素时,remove会报错而discard会静默处理

a = set("asdfg")
print(a)
a.remove("a")
a.discard("dsads")
print(a)

pop:随机弹出一个元素

a = set("asdfg")
print(a)
print(a.pop())
print(a)

clear:直接将集合清空

a = set("asdfg")
print(a)
a.clear()
print(a)

文章来源:https://blog.csdn.net/weixin_67852201/article/details/135650220
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。