python--集合(十六)

python--集合(十六)

一、创建集合

# 集合
'''
集合特性
1、无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。
集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序。
2、互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
有时需要对同一元素出现多次的情形进行刻画,可以使用多重集,其中的元素允许出现多次。
3、确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。

'''
# 创建普通的集合,要创建集合,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔。
num = {1,2,3,4,5}   # 整形的集合
print(type(num))
num = {1.2,'google',(1,2,4)}    # 混合类型的集合
print(num)      #{1.2, 'google', (1, 2, 4)}

# set创建集合
s = set([1,2,3,4,5,6,7,8])
print(s)

#创建空集合
s =set()
print(s)

# 冻结的集合 不能随意修改里面的元素 frozenset
fset =frozenset([1,2,3,4,5,6])
print(fset)

# 子集:子集,为某个集合中一部分的集合,故亦称部分集合。使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。
s1 = set([1,2,3,4,5])
s2 = set([1,2,3])
print(s2<s1)    # True
print(s2.issubset(s1))  #True


# 并集 一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。
#使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。
s1 = set([1,2,3,4,5])
s2 = set([1,2,3])
print(s1|s2)    #{1, 2, 3, 4, 5}
print(s1.union(s2)) #{1, 2, 3, 4, 5}


'''
两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。
使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。
'''
s1 = set([1,2,3,4,5])
s2 = set([1,2,3])
print(s1&s2)    # {1, 2, 3}
print(s1.intersection(s2))  #{1, 2, 3}


'''
差集
A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合
使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。
'''
s1 = set([1,2,3,4,5])
s2 = set([1,2,3])
print(s1-s2)    # {4, 5}
print(s1.difference(s2))    # {4, 5}


'''
对称集
两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。
使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。
'''
s1 = set([1,2,3,4,5])
s2 = set([1,2,3])
print(s1^s2)    # {4, 5}
print(s1.symmetric_difference(s2))  #{4, 5}


'''
集合元素的添加和删除
'''
s1 = set([1,2,3,4,5])
s1.add(6)     #添加一个元素
print(s1)   #{1, 2, 3, 4, 5, 6}

s1.update([7,8,9])  # 添加多个元素
print(s1)   # {1, 2, 3, 4, 5, 6, 7, 8, 9}

'''
删除元素
可以使用 discard() 和 remove() 方法删除集合中特定的元素。
两者之间唯一的区别在于:如果集合中不存在指定的元素,使用 discard() 保持不变;但在这种情况下,remove() 会引发 KeyError。
'''
s1 = set([1,2,3,4,5])
s1.discard(3)   #去掉一个元素
print(s1)   #{1, 2, 4, 5}
s1.remove(2)    # 删除一个元素
print(s1)   #{1, 4, 5}

s1.discard(3)   # 去掉一个不存在的元素(正常)
print(s1)   # {1, 4, 5}
# s1.remove(3)  删除一个不存在的元素(引发错误) KeyError: 3
 
 

二、集合的常用方法

方法 描述
add() 将元素添加到集合中
clear() 删除集合中的所有元素
copy() 返回集合的浅拷贝
difference() 将两个或多个集合的差集作为一个新集合返回
difference_update() 从这个集合中删除另一个集合的所有元素
discard() 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
intersection() 将两个集合的交集作为一个新集合返回
intersection_update() 用自己和另一个的交集来更新这个集合
isdisjoint() 如果两个集合有一个空交集,返回 True
issubset() 如果另一个集合包含这个集合,返回 True
issuperset() 如果这个集合包含另一个集合,返回 True
pop() 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
remove() 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
symmetric_difference() 将两个集合的对称差作为一个新集合返回
symmetric_difference_update() 用自己和另一个的对称差来更新这个集合
union() 将集合的并集作为一个新集合返回
update() 用自己和另一个的并集来更新这个集合

三、集合内置函数

函数 描述
all() 如果集合中的所有元素都是 True(或者集合为空),则返回 True。
any() 如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。
enumerate() 返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。
len() 返回集合的长度(元素个数)
max() 返回集合中的最大项
min() 返回集合中的最小项
sorted() 从集合中的元素返回新的排序列表(不排序集合本身)
sum() 返回集合的所有元素之和


猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/80353844
今日推荐