欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

python之集合set

时间:2023-05-16
Python集合set

author:once Day date:2022年2月16日

本文档在于总结相关内容,零散的知识难以记忆学习。

本文档基于windows平台。

全系列文档查看:python基础_CSDN博客。

文章目录

Python集合set

1.创建集合2.集合基本操作

2.1 set() 创建集合对象2.2 集合运算(差-,并|,交&,异或^) 3.集合方法和函数

3.1 add() 添加一个元素到集合中3.2 clear() 清空集合所有元素3.3 copy() 浅复制集合3.4 update() 用集合、列表、元组、字符串等添加元素3.5 remove(x) 移除元素x3.6 discard(x) 移除集合中元素3.7 pop()随机删除集合中的一个元素3.8 len() 计算元素长度3.9 in 成员资格运算3.10 difference() 返回多个集合的差集3.11 difference_update() 移除相同的元素3.12 intersection()和intersection_update() 取集合的交集3.13 symmetric_difference() 和symmetric_difference_update() 取集合的异或3.14 union()返回两个集合的并集3.15 issubset() 判断子集3.16 isdisjoint 判断集合是否包含相同元素(是否相交)3.17 issuperset() 判断超集 注:本文章内容收集整理于互联网,仅供学习只用! 1.创建集合

集合(set)是一个无序的不重复元素序列。因此在每次运行的时候集合的运行结果的内容都是相同的,但元素的排列顺序却不是固定的,所以运行结果不唯一。

创建集合使用{}和set()即可,里面可以包含其他对像,如数字和字符串,但要求可以哈希散列。

>>> {1,2,3,'set'}{1, 2, 3, 'set'}>>> {1,2,3,'set','set1',3}{1, 2, 3, 'set1', 'set'}#会自动去掉重复的元素

注意创建空集合时不能用{},可以使用set():

>>> a={}>>> type(a)>>> b=set()>>> bset()>>> type(b)

2.集合基本操作 2.1 set() 创建集合对象

可以把字符串,列表以及其他可以接受的数据转化为集合:

>>> set([1,2,'jj',[4,'jk']]) #内嵌的列表无法哈希散列计算,所以创建失败Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'list'>>> set([1,2,'jj','sss']){1, 2, 'jj', 'sss'}>>> set('hellword!'){'d', 'r', '!', 'e', 'w', 'o', 'h', 'l'}

2.2 集合运算(差-,并|,交&,异或^)

>>> a=set('hello')>>> b=set('once')>>> a-b #在a不在b的元素{'h', 'l'}>>> b-a #在b不在a的元素{'n', 'c'}>>> a|b #a和b的全部元素{'c', 'e', 'o', 'h', 'n', 'l'}>>> a&b #a和b都有的元素{'o', 'e'}>>> a^b #a和b中两者单独拥有的元素{'c', 'h', 'n', 'l'}

3.集合方法和函数 3.1 add() 添加一个元素到集合中

>>> a=set('hello')>>> a.add('w')>>> a{'e', 'w', 'o', 'h', 'l'}

3.2 clear() 清空集合所有元素

>>> a=set('hello word')>>> a{'d', 'r', 'e', 'w', 'o', 'h', 'l', ' '}>>> a.clear()>>> aset()

3.3 copy() 浅复制集合

只复制了集合和元素的映射关系,其中对象只有一个!

>>> a=set('hello word')>>> b=a.copy()>>> b{'d', 'r', 'e', 'w', 'o', 'h', 'l', ' '}

3.4 update() 用集合、列表、元组、字符串等添加元素

>>> a=set('hello')>>> a.update([1,4,2],'once')>>> a{1, 2, 4, 'c', 'e', 'o', 'h', 'n', 'l'}>>>

3.5 remove(x) 移除元素x

>>> a=set('hello python')>>> a{'p', 'e', 'y', 't', 'o', 'h', 'n', 'l', ' '}>>> a.remove('hello') #没有会发生错误Traceback (most recent call last): File "", line 1, in KeyError: 'hello'>>> a.remove('h')>>> a{'p', 'e', 'y', 't', 'o', 'n', 'l', ' '}

3.6 discard(x) 移除集合中元素

>>> a=set('hello python')>>> a.discard('h')>>> a{'p', 'e', 'y', 't', 'o', 'n', 'l', ' '}>>> a.discard('hell')#没有的元素不会报错>>> a{'p', 'e', 'y', 't', 'o', 'n', 'l', ' '}

3.7 pop()随机删除集合中的一个元素

在python3.9版本的测试结果显示,删除的是第一个元素,然后整体元素前移。

>>> a=set('hello python')>>> a{'p', 'e', 'y', 't', 'o', 'h', 'n', 'l', ' '}>>> a.pop()'p'>>> a{'e', 'y', 't', 'o', 'h', 'n', 'l', ' '}>>> a.pop()'e'>>> a.pop()'y'>>> a.pop()'t'>>> a.pop()'o'>>> a.pop()'h'>>> a.pop()'n'>>> a.pop()'l'

3.8 len() 计算元素长度

>>> a=set('hello python')>>> len(a)9>>> a{'p', 'e', 'y', 't', 'o', 'h', 'n', 'l', ' '}

3.9 in 成员资格运算

>>> a=set('hello python')>>> a{'p', 'e', 'y', 't', 'o', 'h', 'n', 'l', ' '}>>> 'p' in aTrue>>> 'p' not in aFalse

3.10 difference() 返回多个集合的差集

>>> a=set('hello')>>> b=set('once')>>> a.difference(b){'h', 'l'}

3.11 difference_update() 移除相同的元素

注意difference不会更改原来集合,而这个在原来集合上更改。

>>> a{'o', 'h', 'l', 'e'}>>> b{'o', 'n', 'c', 'e'}>>> a.difference_update(b)>>> a{'h', 'l'}>>>

3.12 intersection()和intersection_update() 取集合的交集

注意intersection_update() 会修改原来的集合

>>> a=set('hello')>>> b=set('once')>>> a.intersection(b){'o', 'e'}>>> a{'o', 'h', 'l', 'e'}>>> a.intersection_update(b)>>> a{'o', 'e'}

3.13 symmetric_difference() 和symmetric_difference_update() 取集合的异或

注意symmetric_difference_update()会修改原来的集合

>>> a=set('hello')>>> b=set('once')>>> a.symmetric_difference(b){'c', 'h', 'n', 'l'}>>> a{'o', 'h', 'l', 'e'}>>> a.symmetric_difference_update(b)>>> a{'c', 'h', 'n', 'l'}

3.14 union()返回两个集合的并集

>>> a=set('hello')>>> b=set('once')>>> a.union(b){'c', 'e', 'o', 'h', 'n', 'l'}>>> a{'o', 'h', 'l', 'e'}

3.15 issubset() 判断子集

issubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。

>>> a=set('hello')>>> b=set('once')>>> c=set('hello word')>>> a.issubset(b)False>>> a.issubset(c)True

3.16 isdisjoint 判断集合是否包含相同元素(是否相交)

isdisjoint() 方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

>>> a=set('hello')>>> b=set('once')>>> c=set('day')>>> a.isdisjoint(b)False>>> a.isdisjoint(c)True

3.17 issuperset() 判断超集

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

>>> a=set('hello')>>> b=set('once')>>> c=set('hello python!')>>> a.issuperset(b)False>>> a.issuperset(c)False>>> c.issuperset(a)True

注:本文章内容收集整理于互联网,仅供学习只用!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。