Python3集合

一、集合

集合是一个无序不重复元素序列。

1. 集合的基本操作

1. 1集合的创建

可以使用大括号{}或者set()函数创建集合。创建一个空集合必须使用set{},而不是{},因为{}是用来创建一个空字典。

>>> a = {1, 3, 2, 4, 5, 1, 2, 1, 2}       #集合主要用户成员资格检查,因此将忽略重复的元素
>>> a
{1, 2, 3, 4, 5}
>>> set(range(5))
{0, 1, 2, 3, 4}

1.2 集合的成员资格检查

>>> a = {1, 2, 3, 4, 5}
>>> 1 in a
True
>>> 6 in a
False

2.集合间的运算

 

集合是可变的,因此不能用作字典中的键。集合只能包含不可变(可散列)的值,因此不能包含其他集合。

集合支持一系列标准操作,包括交集、并集、差集和对称差集。

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5 ,6}
>>> a.intersection(b)           #集合a和b中都包含的元素,等价于a & b
{3, 4}
>>> a.union(b)                       #集合a或b中包含的所有元素,等价于a | b      
{1, 2, 3, 4, 5, 6}
>>> a.difference(b)                #集合a中包含而集合b中不包含的元素,等价于a - b
{1, 2}
>>> a.symmetric_difference(b)    #不同时包含于a和b的元素,等价于a ^ b
{1, 2, 5, 6}

>>> a & b
{3, 4}
>>> >>> a | b
{1, 2, 3, 4, 5, 6}
>>> a - b
{1, 2}
>>> a ^ b
{1, 2, 5, 6}

3. 集合的函数

3.1 len()函数

返回集合中包含的元素个数(重复的会忽略)

>>> a = {1, 2, 3, 4, 5, 1, 2}
>>> len(a)
5

3.2 max/min()函数

返回集合中最大/最小的元素

>>> a = {1, 2, 3, 4, 5}
>>> max(a)
5
>>> min(a)
1

3.3 set()函数

将其他序列转换为集合,若为字典,只返回其键

>>> set((1, 2, 3))
{1, 2, 3}
>>> set('python')
{'o', 'n', 'y', 't', 'p', 'h'}
>>> set([1, 3, 2])
{1, 2, 3}
>>> set({1, 2, 3})
{1, 2, 3}
>>> set({'a':1, 'b':2})
{'b', 'a'}

3.4 sorted()函数

sorted()函数并不会修改集合

>>> s1 = {1, 2, 3 ,4 ,5}
>>> s2 = sorted(s)
>>> s1
{1, 2, 3, 4, 5}
>>> s2
[1, 2, 3, 4, 5]

4. 集合的方法

方法

描述

add

将元素添加到集合中。如果元素已存在,则不进行任何操作

update

添加元素,且参数可以是列表、元组、字典等

remove

移除集合中指定元素。如果元素不存在,则会发生错误

discard

移除集合中的元素。如果元素不存在,不会发生错误

pop

随机删除集合中的一个元素,并且返回这个元素

clear

清空集合

copy

用于拷贝集合

intersection

返回两个集合的交集

union

返回两个集合的并集

difference

返回两个集合的差集

symmetric_difference

返回两个集合中不重复的元素集合

issubset

判断指定集合是否为该方法参数集合的子集

issuperset

判断该方法的参数集合是否为指定集合的子集

3.1 add()方法

用于为集合添加单个元素,若已经存在,不进行任何操作

>>> s1 = {1, 2, 3 ,4 ,5}
>>> s1.add(7)
>>> s1
{1, 2, 3, 4, 5, 7}
>>> s1.add(1)
>>> s1
{1, 2, 3, 4, 5, 7}

3.2 update()方法

为集合添加元组,且参数可以是集合、列表、元组、字典、字符串等。若要添加的元素存在,不进行任何操作

>>> s1 = {1, 2}
>>> s1.update([3, 4])
>>> s1
{1, 2, 3, 4}
>>> s1.update((5, 6))
>>> s1
{1, 2, 3, 4, 5, 6}
>>> s1.update({7, 8})
>>> s1
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s1.update('py')
>>> s1
{1, 2, 3, 4, 5, 6, 7, 8, 'y', 'p'}
>>> s1.update({'a':10,'b':20})
>>> s1
{1, 2, 3, 4, 5, 6, 7, 8, 'y', 'b', 'p', 'a'}

3.3 remove()方法

用于移除集合中指定元素。若元素不存在,则会报错

>>> s1 = {1, 2, 3}
>>> s1.remove(1)
>>> s1
{2, 3}
>>> s1.remove(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 1

3.4 discard()方法

类似于remove()方法,也用于移除集合中指定元素。但是若元素不存在,不会会报错

>>> s1 = {1, 2, 3}
>>> s1.discard(1)
>>> s1
{2, 3}
>>> s1.discard(1)
>>> s1
{2, 3}

3.5 pop()方法

随机删除集合中的一个元素,并且返回这个元素

>>> s1 = {3, 1, 6, 4, 7, 10}
>>> s1.pop()
1
>>> s1.pop()
3
>>> s1
{4, 6, 7, 10}

3.6 clear()方法

用于清空集合

>>> s1 = {1, 2, 3 ,4}
>>> s1.clear()
>>> s1
set()
del()也可以用于删除集合,但会连同这个变量也删除
>>> s1 = {1, 2, 3 ,4}
>>> del(s1)
>>> s1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 's1' is not defined

3.7 copy()方法

用于拷贝集合

>>> s1 = {1, 2, 3 ,4}
>>> s2 = s1.copy()         #这个copy()方法貌似有返回值
>>> s1
{1, 2, 3, 4}
>>> s2
{1, 2, 3, 4}

3.8 intersection()方法

返回两个集合的交集,等价于a & b

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5 ,6}
>>> a.intersection(b)        
{3, 4}

3.9 union()方法

返回两个集合的并集,等价于a | b

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5 ,6}
>>> a.union(b)                       
{1, 2, 3, 4, 5, 6}

3.10 difference()方法

返回两个集合的差集,等价于a - b

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5 ,6}
>>> a.difference(b)             
{1, 2}

3.11 symetric_difference()方法

返回两个集合中不重复元素的集合,等价于a ^ b

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5 ,6}
>>> a.symmetric_difference(b)    
{1, 2, 5, 6}

3.12 issubset()方法

判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False

>>> s1 = {1, 2, 3 ,4}
>>> s2 = {1, 2}
>>> s3 = {1, 5}
>>> s2.issubset(s1)
True
>>> s3.issubset(s1)
False

3.13 issuperset()方法

用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False

>>> s1 = {1, 2, 3 ,4}
>>> s2 = {1, 2}
>>> s3 = {1, 5}
>>> s1.issuperset(s2)
True
>>> s1.issuperset(s3)
False

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值