序列结构之集合

集合属于无序可变序列,使用一对大括号"{}"作为定界符,元素之间使用逗号","分隔开,同一个集合内的每个元素都是唯一的,元素之间不允许重复。

集合中的元素只能是数字,字符串,元组等不可变类型或者可哈希的数据),而不能包含列表、字典、集合等可变类型数据。

集合对象的创建

使用赋值符号“=”直接讲集合赋值给变量即可创建一个集合对象

>>> set1 = {1,2,3}
>>> type(set1)
<class 'set'>

使用set()类型转换函数将列表、元组、字符串、range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只会保留一个;如果原序列或迭代对象中有不可哈希的值,无法转换为集合,抛出异常。

>>> set1 = set(range(1,8))    #把range对象转换为集合
>>> set1
{1, 2, 3, 4, 5, 6, 7}
>>> set1 = set([1,1,2,2,3,3,4,4,5,5])    #列表转换为集合,自动去掉重复元素
>>> set1
{1, 2, 3, 4, 5}
>>> set1 = set()    #创建一个空集合必须用set()而不是{},因为{}用来创建一个空字典
>>> set1
set()

创建一个空集合必须用set()而不是使用定界符{},因为定界符{}用来创建一个空字典

集合元素的增加与删除

add()方法可以用来增加新的元素,如果该元素已经存在则忽略该操作,不会抛出异常但一次只能添加一个元素

>>> set1 = set()
>>> set1
set()
>>> set1.add (1)
>>> set1
{1}

uppdate()方法用于合并另外序列中的元素到当前集合中,并自动去除重复元素。如字符串拆分成单个字符。如果序列或迭代对象中有不可哈希的元素,无法转换为集合,抛出异常。

>>> set1
{1}
>>> set1.update ([1,2,3,4])    #更新当前列表,自动忽略重复的元素
>>> set1
{1, 2, 3, 4}

remove()方法用来删除集合中的元素,若指定元素不存在则报异常

>>> set1 = {1,2,3,4}
>>> set1.remove (5)    #列表中不存在指定元素报异常
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    set1.remove (5)
KeyError: 5
>>> set1.remove (4)
>>> set1
{1, 2, 3}

discard()方法用来删除集合中的元素,若指定元素不存在则忽略该操作

>>> set1 = {1,2,3,4}
>>> set1.discard (5)    #列表中不存在指定元素则忽略此次操作,不报错
>>> set1
{1, 2, 3, 4}

pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则报异常

>>> set1 = {1,2,3,4}
>>> set1.pop ()    #随机删除并返回一个元素
1

clear()方法清空集合

>>> set1 = {1,2,3,4}
>>> set1.clear ()
>>> set1
set()

del命名来删除集合对象,不能单独删除集合中的元素

>>> set1 = {1,2,3,4}
>>> del set1
>>> set1
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    set1
NameError: name 'set1' is not defined

集合的运算

并集,交集,差集,对称差集,比较集合大小\包含关系,真子集,子集

>>> set1 = set([1,2,3,4,5])
>>> set2 = {3,4,5,6,7}
>>> set1 | set2    #并集     方法:set1|set2|...|setN
{1, 2, 3, 4, 5, 6, 7}
>>> set1.union (set2)    #并集    union()方法
{1, 2, 3, 4, 5, 6, 7}
>>> set1 & set2    #交集     方法:set1 & set2 & ... & setN
{3, 4, 5}
>>> set1.intersection (set2)    #交集    intersection()方法
{3, 4, 5}
>>> set1 - set2    #差集     方法:set1 - set2 - ... - setN
{1, 2}
>>> set1.difference (set2)    #差集    difference()方法
{1, 2}
>>> set1 ^ set2    #对称差集,取相异部分     方法:set1 ^ set2 ^ ... ^ setN
{1, 2, 6, 7}
>>> set1.symmetric_difference (set2)    #对称差集    symmetric_difference()方法
{1, 2, 6, 7}
>>> set1 = {1,2,3}
>>> set2 = {1,2,5}
>>> set3 = {1,2,3,4}
>>> set1 < set2    #比较集合大小\包含关系
False
>>> set1 < set3    #真子集
True
>>> set2 < set3    #子集
False
>>> {1,2,3} <= {1,2,3}
True

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值