Python-集合

集合的定义:

   集合成为set和其他语言类似,是一个无序不重复的元素集。

   功能包括:关系的测试、消除重复的元素;集合还支持 交集、并集、差集、对称差集

   备注:由于集合是无序的,所以不支持 索引、分片和其它序列的操作

下面我们来做一下实操:

   定义一个集合

#集合
s = {3,2,5,8,9}            #直接定义
s1 = set([1,3,4,6,7])      #用set函数来定义
print(s)
print(s1)
输出:
C:Python35python.exe D:/linux/python/all_test/总练习.py
{8, 9, 2, 3, 5}                       #集合的无序
{1, 3, 4, 6, 7}

  集合的操作

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,3,4,6,7])      #用set函数来定义
s.add(10)                  #添加一个集合元素
print(s)
print(s1)
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {2, 3, 5, 8, 9, 10}     #这里我们可以看出添加了一个10的元素并去重了
# {1, 3, 4, 6, 7}
s3 = frozenset(s1)      #使用此函数是把集合s1封闭了并赋值给s3
print(s3)
s3.aad(10)print(s3)
# 输出:
# {1, 3, 4, 6, 7}
# Traceback (most recent call last):
# frozenset({1, 3, 4, 6, 7})
#   File "D:/linux/python/all_test/总练习.py", line 25, in <module>
#     s3.aad(10)
# AttributeError: 'frozenset' object has no attribute 'aad'   #这里提示不能添加,因为s3封闭了
print(s)
s.update([11,12])    #一次性增加两个元素
print(s)
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {2, 3, 5, 8, 9, 10}
# {1, 3, 4, 6, 7}
# frozenset({1, 3, 4, 6, 7})
# {2, 3, 5, 8, 9, 10}
# {2, 3, 5, 8, 9, 10, 11, 12}     #一次性增加了两个元素

集合的元素删除

s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
print(s)
s.remove(5)   #删除一个集合元素
print(s)
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {8, 9, 2, 3, 5}
# {8, 9, 2, 3}    #我们可以看出少了5元素

集合的长度

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
print(len(s))       #备注会自动去掉重复的元素
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# 5

集合的in和not in

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
print(3 in s)       #在s里返回True
print(1 in s)       #不在返回Flase
print(3 not in s)   #不在返回True在返回Flase
print(1 not in s)   #不在返回True在返回Flase
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# True
# False
# False
# True

集合的包含

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,2])
s3 = {2,5}
print(s1.issubset(s))    #测试是否 s1 中的每一个元素都在s 中,在为Ture不在为Flase  
print(s3.issubset(s))    #测试是否 s3 中的每一个元素都在s 中,在为Ture不在为Flase
#也可以用s1 > s
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# False
# True

集合的union(合集)

s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,2])
s3 = {2,5,10}
print(s.union(s1))   #返回一个新的 set 包含 s 和 s1 中的每一个元素,也就是合集
print(s | s3)        
# 输出: # C:Python35python.exe D:/linux/python/all_test/总练习.py # {1, 2, 3, 5, 8, 9} # {2, 3, 5, 8, 9, 10}

集合的inttersection(交集)

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,2])
s3 = {2,5,10}
print(s.intersection(s1))   #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集
print(s & s3)        #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {2}
# {2, 5}

集合的difference

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,2])
s3 = {2,5,10}
print(s.difference(s1))   #返回一个新的 set 包含 s有则t 中没有的元素
print(s - s3)             #返回一个新的 set 包含 s有则t 中没有的元素
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {8, 9, 3, 5}
# {8, 9, 3}

集合的symmetric_difference

#集合
s = {3,2,5,8,9,9,8}            #直接定义,这里我们定义的有重复元素
s1 = set([1,2])
s3 = {2,5,10}
print(s.symmetric_difference(s1))   #返回一个新的 set 包含 s有则s1 不重复的元素
print(s ^ s3)             #返回一个新的 set 包含 s有则s1 不重复的元素
# 输出:
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {1, 3, 5, 8, 9}
# {8, 9, 10, 3}

集合的copy

s1 = s.copy()    #set “s”的一个浅复制
print(s)        
print(s1)
print(id(s))
print(id(s1))
# C:Python35python.exe D:/linux/python/all_test/总练习.py
# {8, 9, 2, 3, 5}
# {8, 9, 2, 3, 5}
# 1763954978600     #指向的内存不同
# 1763955004360  

这里集合就说完了

原文地址:https://www.cnblogs.com/Plynn/p/6421410.html