python中怎样创建集合,集合的运算有哪些?
这篇文章给大家分享的是python集合的内容。下文将介绍集合的概念、创建集合、集合的运算、集合的方法、不可变集合等等。文中介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
1、集合
Python中的集合和数学上的集合基本是没有区别的,是无序的,即不可以使用索引访问的,集合中是不能出现重复元素的。
2、创建集合
在Python中创建集合使用花括号{
}
字面量的方式,或者使用set()来创建一个集合。使用{
}
中必须至少含一个元素,创建空集合不能使用{
}
,这样创建的是空字典,应该使用set()的方式来创建一个集合。
# 使用字面量方法创建集合
set1 = {
"Hello", "World"}
print(type(set1), set1) # class 'set'>
{
'World', 'Hello'}
# print(set1[1]) # TypeError: 'set' object does not support indexing
# 使用set()的方式创建
set2 = set("hello") # {
'l', 'o', 'h', 'e'}
集合会去掉重复的元素,即"l"
print(set2)
# 创建空集合
set3 = {
}
set4 = set()
print(type(set3), type(set4)) # class 'dict'>
字典 class 'set'>
list1 = [1, 2, 3, 4, 3, 5, 1, 3]
# 将列表转换为集合
set6 = set(list1)
print(type(set6), set6) # class 'set'>
{
1, 2, 3, 4, 5}
# 使用生成列生成列表
set5 = {
num for num in range(20) if num % 3 == 0}
print(set5) # {
0, 3, 6, 9, 12, 15, 18}
# 遍历循环
for ch in set5:
print(ch)
注意:集合中的元素为不可变的类型,如整数、浮点、字符串、元组等,也就是说可变类型不能作为元组的元素,集合本身也是可变类型,所以集合不能够作为集合中的元素。
3、集合的运算
集合数据类型拥有超多的运算符,包括成员运算、交集运算、并集运算、差集运算、比较运算(相等性、子集、超集)等。
3.1 成员运算
可以通过成员运算in和not in 检查元素是否在集合中,
示例代码如下:
set1 = {
"你好", "Python", "这个是", "集合", "set"}
print("Python" in set1) # True
print("您好" in set1) # False
print("set" not in set1) # False
print("list" not in set1) # True
3.2 交并差运算
Python中的集合跟数学上的集合一样,可以进行交集、并集、差集等运算,而且可以通过运算符和方法调用两种方式来进行操作。
示例代码如下:
set1 = {
1, 2, 3, 4, 5, 6, 7}
set2 = {
2, 4, 6, 8, 10}
# 交集(咱俩都有的)
# 方法一: 使用 &
运算符
print(set1 &
set2) # {
2, 4, 6}
# 方法二: 使用intersection方法
print(set1.intersection(set2)) # {
2, 4, 6}
# 并集(咱俩加在一起)
# 方法一: 使用 | 运算符
print(set1 | set2) # {
1, 2, 3, 4, 5, 6, 7, 8, 10}
# 方法二: 使用union方法
print(set1.union(set2)) # {
1, 2, 3, 4, 5, 6, 7, 8, 10}
# 差集(我不要你有的)
# 方法一: 使用 - 运算符
print(set1 - set2) # {
1, 3, 5, 7}
# 方法二: 使用difference方法
print(set1.difference(set2)) # {
1, 3, 5, 7}
# 对称差(咱俩不要你的和我的,只要专一的)
# 方法一: 使用 ^ 运算符
print(set1 ^ set2) # {
1, 3, 5, 7, 8, 10}
# 方法二: 使用symmetric_difference方法
print(set1.symmetric_difference(set2)) # {
1, 3, 5, 7, 8, 10}
# 方法三: 对称差相当于两个集合的并集减去交集
print((set1 | set2) - (set1 &
set2)) # {
1, 3, 5, 7, 8, 10}
集合的交集、并集、差集运算还可以跟赋值运算一起构成复合运算,
示例代码如下:
set1 = {
1, 3, 5, 7}
set2 = {
2, 4, 6}
# 将set1和set2求并集再赋值给set1
# 也可以通过set1.update(set2)来实现
set1 |= set2 # set1 = set1 | set2
print(set1) # {
1, 2, 3, 4, 5, 6, 7}
set3 = {
3, 6, 9}
# 将set1和set3求交集再赋值给set1
# 也可以通过set1.intersection_update(set3)来实现
set1 &
= set3 # set1 = set1 &
set3
print(set1) # {
3, 6}
3.3 比较运算
两个集合可以用==和!=进行相等性判断,如果两个集合中的元素完全相同,那么==比较的结果就是True,否则就是False;!=则反之。
如果集合A的所有的元素也是集合B的元素,就称为A是B的子集,B是A的超集;如果集合A的子级且不等于集合B,那就称为A是B的真子级。判断子集和超集的运算符为和> 。示例代码↓
set1 = {
1, 3, 5}
set2 = {
1, 2, 3, 4, 5}
set3 = set2
# 运算符表示真子集,=运算符表示子集
print(set1 set2, set1 = set2) # True True
print(set2 set3, set2 = set3) # False True
# 通过issubset方法也能进行子集判断
print(set1.issubset(set2)) # True
print(set2.issubset(set2)) # True
# issubset方法和=运算符是等价的
# 反过来可以用issuperset或>
运算符进行超集判断
print(set2.issuperset(set1)) # True
print(set2 >
set1) # True
4、集合的方法
集合属于可变列类型,可以通过集合类型的方法对集合的元素进行修改,
示例代码:
# 创建一个空集合
set1 = set()
# 通过add()方法为集合添加元素
set1.add(1)
set1.add(2)
print(set1) # {
1, 2}
# 通过update()给集合添加元素
set1.update({
1, 2, 3, 4, 5}
)
print(set1) # {
1, 2, 3, 4, 5}
元素在集合中已存在,该元素只会出现一次
# 通过discard()方法删除指定元素
set1.discard(4)
set1.discard(2)
set1.discard(22) # 集合里面没有不会出错
print(set1) # {
1, 3, 5}
# 通过remove()方法删除指定元素
# set1.remove(6) # KeyError: 6,使用remove()方法删除指定元素时先做成员运算就不会出错了
if 6 in set1:
set1.remove(6)
# pop方法可以从集合中随机删除一个元素并返回该元素
print(set1.pop()) # 1 本次剔除的是1
# clear方法可以清空整个集合
set1.clear()
print(type(set1)) # class 'set'>
print(set1) # set()
# 通过isdisjoint()方法判断两个集合有没有重复的元素,有返回False没有则返回Ture
set2 = {
"Hello", "World"}
set3 = {
"Hello", "一碗周"}
set4 = {
"Hi", "Python"}
print(set2.isdisjoint(set3)) # False
print(set2.isdisjoint(set4)) # True
5、不可变集合
Python中还有一种不可变类型的集合,名字叫frozenset,于集合的区别就跟列表和元组的区别一样。除了不能添加和删除元素,frozenset在其他方面跟set基本是一样的。
示例代码:
set1 = frozenset({
1, 3, 5, 7}
)
set2 = frozenset(range(1, 6))
print(set1 &
set2) # frozenset({
1, 3, 5}
)
print(set1 | set2) # frozenset({
1, 2, 3, 4, 5, 7}
)
print(set1 - set2) # frozenset({
7}
)
print(set1 set2) # False
关于python集合的内容就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多大家可以关注其它的相关文章。
文本转载自脚本之家
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: python中怎样创建集合,集合的运算有哪些?
本文地址: https://pptw.com/jishu/651500.html
