Python零基础入门学习07:容器数据类型:集合类型

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

集合类型定义

集合是多个元素的无序组合,与数学中集合的概念一致(即具备互异性无序性)。所谓互异性,是指集合中的每一个元素都是独一无二的,集合中不存在两个相同的元素。跟字典中的键一样,集合中的元素须是不可变数据类型

集合的建立

集合用大括号{}表示,元素间用逗号隔开。

建立集合类型用{}或set()。

建立空集合类型,必须使用set()。不能用{}。这是因为,用{}定义的是字典类型的空字典,而用set()才能定义集合类型的空集合。如下所示:

a = set()
b = {}
print("a的类型为", type(a))  # 集合类型。
print("b的类型为", type(b))  # 字典类型。

<<<
a的类型为 <class 'set'>
b的类型为 <class 'dict'>
<<<
可变数据类型和不可变数据类型

可变数据类型有:list,dict,set。

不可变数据类型有:int,float,string,tuple,range()。

值得注意的是,虽然字典的键和集合中的元素要求是不可变数据类型,但是字典和集合本身都是可变数据类型。

两种方法建立集合类型的例子如下:

A = {"python", 123, ("python", 123)} #使用{}建立集合
B = set("pypy123")     #使用set{}建立集合
print("A =", A)
print("B =", B)

<<<
A = {123, 'python', ('python', 123)}
B = {'3', '2', 'p', 'y', '1'}
<<<
集合的操作符及运算

集合有6个基本操作符和4个增强操作符。

集合有6个基本操作符如下:

header 1 header 2
row 1 col 1 row 1 col 2
row 2 col 1 row 2 col 2
基本操作符及应用 运算说明 描述
S | T 并集 返回一个新集合,包括在集合S和T中的所有元素
S - T 差集 返回一个新集合,包括在集合S但不在T中的元素
S & T 交集 返回一个新集合,包括同时在集合S和T中的元素
S ^ T 对称差 返回一个新集合,包括集合S和T中的非相同元素
S<=T或S<T 包含于 返回True/False,判断S和T的子集关系
S>=T或S>T 包含 返回True/False,判断S和T的包含关系

集合的4个增强操作符如下:

增强操作符及应用 描述
S |= T 更新集合S,包括在集合S和T中的所有元素
S -= T 更新集合S,包括在集合S但不在T中的元素
S &= T 更新集合S,包括同时在集合S和T中的元素
S ^= T 更新集合S,包括集合S和T中的非相同元素

交集判定

S1.isdisjoint(S2):S1与S2的集合交集是否为空,True为空,否则False。

集合运算的例子如下:

A = {"p", "y", 123}
B = {"1", "2", "3", "p", "y"}
print("A - B =", A - B) #A-B返回包含在A中,但不包含在B中的元素构成的集合。
print("B - A =", B - A) #B-A返回包含在B中,但不包含在A中的元素构成的集合。
print("A & B =", A & B) #A&B是交集运算,返回同时包含在A和B中的元素构成的集合。
print("A | B =", A | B) #A|B是并集运算,返回包含在A和B中的所有元素构成的集合。
print("A ^ B =", A ^ B) #A^B是对称差运算,返回A和B中的所有非相同元素构成的集合。

<<<
A - B = {123}
B - A = {'2', '1', '3'}
A & B = {'p', 'y'}
A | B = {'3', '2', 'p', 'y', '1', 123}
A ^ B = {'3', '2', '1', 123}
<<<
集合的操作方法或函数

设S为一个集合。

增长集合

S.add(elem)——添加一个元素(必须是不可变数据)。

S.update(Set)——批量添加其它集合中的所有元素。

缩减集合

S.remove(elem)——从集合中移除元素elem。如果elem不存在于集合中则会引发 KeyError。

S.discard(elem)——如果元素elem存在于集合中则将其移除。如果elem不存在,并不会报错。

S.pop()——从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyError。

S.clear()——从集合中移除所有元素。

下面是集合的增长和缩减的方法或函数的一些例子:

S = {'a', 'b', 'c'}
#集合添加元素。

S.add('d')  #集合S添加一个元素。

S
Out[54]: {'a', 'b', 'c', 'd'}

S1 = {'e', 'f'}

S.update(S1)  #批量添加集合S1中的所有元素到集合S中。

S
Out[57]: {'a', 'b', 'c', 'd', 'e', 'f'}

#集合缩减元素。
S.remove('f')  #.remove(elem)移除单个元素elem。

S.remove('g')  #.remove(elem)移除的元素elem不存在时会报错。
Traceback (most recent call last):

  File "<ipython-input-59-d161f40a2bc5>", line 1, in <module>
    S.remove('g')

KeyError: 'g'


S.discard('e')  #.discard(elem)移除单个元素,同.remove(elem)。

S.discard('g')  #.discard(elem)移除的元素elem不存在时,不会报错。与.remove(elem)不同。

S.pop()  #随机移除S集合中的任意一个元素。
Out[62]: 'a'

S.pop()
Out[63]: 'c'

S
Out[64]: {'b', 'd'}

S.clear()  #一次性清空集合S中的所有元素。

S
Out[66]: set()

集合大小:len函数。

S = {1, 2, 3, 4, 'a', 'b', 'c', 'd'}

len(S)
Out[2]: 8

To be continued.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 花间派,主要是歌咏旅愁闺怨、合欢离恨,多局限于男女燕婉之私,格调不高,除有少数暗伤亡国的作品和边塞词之外,花间词在...
    华夏文明号阅读 4,574评论 0 0
  • (水寒) 五色梅(一) 是否情深缘浅 终究错过了花期 又看到你 是在朋友的微信里 在清晨醒来時 重温她们昨晚辗...
    善兰阅读 4,525评论 2 14
  • 前些天读了沐沐老师写的卡尔.拉格斐的传奇人生,就想起我的同事李大姐,虽然二人没有任何可比性,但有一点是相同...
    兰苑行人阅读 3,335评论 9 11
  • C++是在C语言的基础上发展来的。C++除了有C语言的指针外,还增加一个新的概念——引用,初学者容易把引用和指针混...
    萧潇公举阅读 12,746评论 1 5

友情链接更多精彩内容