|
|
51CTO旗下网站
|
|
移动端

2.2.9 集合与不可变集合(1)

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍集合与不可变集合。

作者:李金来源:机械工业出版社|2018-05-03 17:22

2.2.9 集合与不可变集合(1)

字符串和列表都是一种有序序列,而集合(Set)是一种无序的序列。集合中的元素具有唯一性,即集合中不存在两个同样的元素。

Python为了确保集合中不包含同样的元素,规定在集合中放入的元素只能是不可变类型的,如数字,字符串,元组等。浮点数由于存在精度的问题,一般不适合做集合中的元素。

1.集合的生成

空集合可以用set()函数来生成:

  1. In [1]: type(set())   
  2. Out[1]: set 

可以在set()函数中传入一个列表,初始化这个集合:

  1. In [2]: set([1, 2, 3, 1])   
  2. Out[2]: {1, 2, 3} 

因为集合中的元素有唯一性,所以重复的元素 1只保留了一个。

我们还可以用一对大括号“ {}”的来创建集合:

  1. In [3]: {1, 2, 3, 1}   
  2. Out[3]: {1, 2, 3} 

但是空集合只能用set()函数来创建,因为空的大括号“{}”创建的是一个空的字典:

  1. In [4]: type({})   
  2. Out[4]: dict  

2.集合的基本运算

集合的运算可以用文氏图来描述。

如图 2-1所示,两个圆形分别表示集合 A和 B,区域1表示A和B的交集;区域2表示A与B的差集;区域 3表示 B与 A的差集;区域 2和区域 3一起是 A和 B的对称差集;区域1、区域 2和区域 3一起是 A和 B的并集。


考虑这两个集合:

  1. In [5]: a, b = {1, 2, 3, 4}, {3, 4, 5, 6} 

(1)并集

两个集合的并集可以用操作符“|”实现,返回包含两个集合所有元素的集合:

  1. In [6]: a | b   
  2. Out[6]: {1, 2, 3, 4, 5, 6}   
  3. In [7]: b | a   
  4. Out[7]: {1, 2, 3, 4, 5, 6} 

并集运算是可交换的,即 a|b与 b|a返回的是相同的结果。也可以用.union()方法得到两个集合的并集:

  1. In [8]: a.union(b)   
  2. Out[8]: {1, 2, 3, 4, 5, 6} 

(2)交集

两个集合的交集可以用操作符“&”实现,返回包含两个集合公有元素的集合:

  1. In [9]: a & b   
  2. Out[9]: {3, 4}   
  3. In [10]: b & a   
  4. Out[10]: {3, 4} 

交集运算也是可交换的,即a & b与b & a返回的是相同的结果。也可以用.intersection()方法得到两个集合的交集:

  1. In [11]: a.intersection(b)   
  2. Out[11]: {3, 4} 

(3)差集 两个集合的差集可以用操作符“-”实现,返回在第一个集合而不在第二个集合中的元素组成的集合。

差集运算是不可交换的,因为a-b返回的是在a不在 b中的元素组成的集合,而 b-a返回的是返回在 b不在 a的元素组成的集合:

  1. In [12]: a - b   
  2. Out[12]: {1, 2}  
  3. In [13]: b - a   
  4. Out[13]: {5, 6} 

也可以用.difference()方法得到两个集合的差集:

In [14]: a.difference(b)  Out[14]: {1, 2} In [15]: b.difference(a)  Out[15]: {5, 6} # 相当于 a-b # 相当于 b-a

(4)对称差集

两个集合的对称差集可以用操作符“^”实现,等于两个集合的并集与交集的差:

  1. In [16]: a ^ b Out[16]: {1, 2, 5, 6} In [17]: b ^ a Out[17]: {1, 2, 5, 6} 

对称差是可交换的操作,它对应的方法是.symmetric_difference():

  1. In [18]: a.symmetric_difference(b) Out[18]: {1, 2, 5, 6} 

3.集合的包含关系

如果集合 A的元素都是另一个集合 B的元素,那么 A就是 B的一个子集。如果 A与 B不相同,那么A叫做 B的一个真子集。因此,B是 B自己的子集,但不是自己的真子集。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

公钥基础设施PKI及其应用

公钥基础设施PKI(Public Key Infrastructure)是利用公钥概念和加密技术为网上通信提供的符合标准的一整套安全基础平台。公钥基础设施能为...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊