Python学习笔记(二)Python序列之集合

2.4  集合

2.4.1  定义

集合是无序可变序列,使用一对大括号界定,元素不可重复,同一个集合中每个元素都是唯一的。集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。

2.4.2  集合的创建与删除

创建

直接将集合赋值给变量

例如:

>>> a = {3, 5}

>>> a.add(7)                  #向集合中添加元素

>>> a

{3, 5, 7}

使用set将其他类型数据转换为集合

例如:

>>> a_set = set(range(8,14))

>>> a_set

{8, 9, 10, 11, 12, 13}

>>> b_set = set([0, 1, 2, 3, 0, 1, 2, 3, 7, 8])     #自动去除重复

>>> b_set

{0, 1, 2, 3, 7, 8}

>>> c_set = set()                                              #空集合

>>> c_set

set()

删除 

①使用del删除整个集合

2.4.3  集合元素的增加与删除

增加元素

①使用add()方法为集合添加新元素,如果该元素已存在于集合中则忽略该操作。

例如:

>>>s = {1,2,3}

>>>s.add(3)

>>>s

{1,2,3}

②使用update()方法合并另外一个集合中的元素到当前集合中

例如:

>>>s = {1,2,3}

>>>s.update({3,4,5})

>>>s

{1,2,3,4,5}

删除元素

当不再使用某个集合时,可以使用del命令删除整个集合。集合对象的pop()方法弹出并删除其中一个元素,remove()方法直接删除指定元素,clear()方法清空集合。

例如:

>>> a = {1, 4, 2, 3}

>>> a.pop()

1

>>> a.pop()

2

>>> a

{3, 4}

>>> a.add(2)

>>> a

{2, 3, 4}

>>> a.remove(3)

>>> a

{2, 4}

2.4.4  集合操作 

Python集合支持交集、并集、差集等运算

例如:

>>> a_set = set([8, 9, 10, 11, 12, 13])

>>> b_set = {0, 1, 2, 3, 7, 8}

>>> a_set | b_set                             #并集

{0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}

>>> a_set.union(b_set)                   #并集

{0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}

>>> a_set & b_set                           #交集

{8}

>>> a_set.intersection(b_set)          #交集

{8}

>>> a_set.difference(b_set)             #差集

{9, 10, 11, 12, 13}

>>> a_set - b_set

      {9, 10, 11, 12, 13}

 

>>> a_set.symmetric_difference(b_set)    #对称差集

{0, 1, 2, 3, 7, 9, 10, 11, 12, 13}

>>> a_set ^ b_set

{0, 1, 2, 3, 7, 9, 10, 11, 12, 13}

>>> x = {1, 2, 3}

>>> y = {1, 2, 5}

>>> z = {1, 2, 3, 4}

>>> x.issubset(y)                                     #测试是否为子集

False

>>> x.issubset(z)

True

>>> {3} & {4}

set()

>>> {3}.isdisjoint({4})                               #如果两个集合的交集为空,返回True

True

集合包含关系测试

>>> x = {1, 2, 3}

>>> y = {1, 2, 5}

>>> z = {1, 2, 3, 4}

>>> x < y                                        #比较集合大小/包含关系

False

>>> x < z                                         #真子集

True

>>> y < z

False

>>> {1, 2, 3} <= {1, 2, 3}                #子集

True

 使用集合快速提取序列中单一元素

 

>>> import random

>>> listRandom = [random.choice(range(10000)) for i in range(100)]

>>> noRepeat = []

>>> for i in listRandom :

    if i not in noRepeat :

   noRepeat.append(i)

>>> len(listRandom)

>>> len(noRepeat)

>>> newSet = set(listRandom)

2.4.5  集合推导式

Python也支持集合推导式。

>>> s = {x.strip() for x in ('  he  ', 'she    ', '    I')}

>>> s

{'I', 'she', 'he'}

PS:

本篇主要参考董付国老师的《Python可以这样学》一书,这是一本不错的Python入门书籍,有兴趣的可以买本看看,当然,也可以持续关注我的博客,我会一直更新相关内容的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值