一、集合的定义方法及特点

1、特点:

  (1)由不同元素组成

#集合由不同元素构成
s={1,2,3,3,4,3,3,}
print(s)#运行结果:{1, 2, 3, 4}

  (2)集合无序

#集合无序
s={'lilei','liuhua','alax','bob','bbb','bob'}
print(s)#运行结果:{'bob', 'liuhua', 'bbb', 'alax', 'lilei'}

  (3)集合只能存放数字、字符串和元祖(即不可变类型)

#集合只能存放不可变类型
s={'alax',12,[1,2],('bab')}#[1,2]为列表类型
print(s)

  运行结果:

2、定义方式

  类型一:s={ }

  类型二:s=set( )

s=set('hel')
print(s)#输出结果:{'h', 'l', 'e'}

二、集合的内置方法

1、.add( )     添加(不可添加相同元素)

#添加
s1={1,2,3}
s1.add('alax')
print(s1)#输出结果:{1, 2, 3, 'alax'}
s2={1,2,3}
s2.add(3)
print(s2)#输出结果:{1, 2, 3}

2、.clear( )    清空、.copy( )   拷贝

#清空、拷贝
s={1,2,3}
s1={'baba'}
s.clear()
print(s)#输出结果:set()
s1.copy()
print(s1)#输出结果:{'baba'}

3、删除 .pop( ) 随机删除   .remove( )指定删除——>元素不存在会报错   .discard( )指定删除——>元素不存在不会报错

#删除
s1={'ax',1,2,3}
s1.pop()
print(s1)#运行结果:{1, 'ax', 2}
s2={'ax',1,2,3}
s2.remove('ax')
print(s2)#运行结果:{1, 2, 3}
#s2.remove('axxx')
#print(s2)#不存在,运行结果报错
s3={'ax',1,2,3}
s3.discard('axxxx')
print(s3)#运行结果:{1, 2, 3, 'ax'},不存在但是不报错

二、集合关系运算、交叉,并集

1、基本关系运算

  现在我们举一个例子

  例:现在有同学'bob','alax','zh'学习Python,有同学'bob','zh'学习Linux,用列表统计处即学习Python也学习Linux的同学名单。

  解答:此题使用列表解决有三种写法,如下所示:

#列表举例
python_l=['bob','alax','zh']
linux_l=['zh','bob'] # #方法一:
# for i in python_l:
# for j in linux_l:
# if i==j:
# print(i)#运行结果:['bob', 'zh'] # #方法二:
# for name_l in python_l:
# if name_l in linux_l:
# print(name_l)#运行结果:['bob', 'zh'] #方法三:
python_l_and_linux_l=[]
for name_l in python_l:
if name_l in linux_l:
python_l_and_linux_l.append(name_l)
print(python_l_and_linux_l)#运行结果:['bob', 'zh']

  现在我们用集合来解决此类问题:

如上图所示,求即学习Python_l和Linux_l的同学,即求交集部分

(1)交集,A.intersection(B) A与B的交集  或者 A&B

  例题所示代码表示为:

python_l=['bob','alax','zh']
linux_l=['zh','bob']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的交集————————
print(p_l.intersection(l_l))#运行结果:{'zh', 'bob'}
print(p_l&l_l)#运行结果:{'zh', 'bob'}

  补充:交集更新  A.intersection_updata(B)

(2)并集,A.union(B)  A与B的并集 或者A|B

#集合求并集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的并集————————
print(p_l.union(l_l))#运行结果:{'alax', 'hahah', 'zh', 'bob'}
print(p_l|l_l)#运行结果:{'alax', 'hahah', 'zh', 'bob'}

(3)差集:即A中存在但是B中不存在的元素  A.diference(B)   或者  A-B或者B-A

#集合求差集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
#——————求两个集合的差集————————
print(p_l-l_l)#运行结果:{'alax'}
print(l_l-p_l)#运行结果:{'hahah'}
print(p_l.difference(l_l))#运行结果:{'alax'}

  图解如下:

  补充:差集更新

python_l=['bob','alax','zh','hghg']
linux_l=['zh','bob','hahah','hghg','hhhh']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
p_l.difference_update(l_l)
print(p_l)#运行结果:{'alax'}

(4)交叉补集   A.symmetric_difference(B)  或者  A^B

#交叉补集
python_l=['bob','alax','zh']
linux_l=['zh','bob','hahah']
#——————转化为集合形式——————————
p_l=set(python_l)
l_l=set(linux_l)
print(p_l.symmetric_difference(l_l))#运行结果:{'alax', 'hahah'}
print(p_l^l_l)#运行结果:{'alax', 'hahah'}

  图解如下:

2、其他关系运算

(1)判断两个集合的交集是否为空  A.isdisjoint(B)

s1={'kk','bb','zz'}
s2={'kk','ss','aa'}
s3={1,2,3}
result1=s1.isdisjoint(s2)
print(result1)#运行结果:False ——> 即交集不为空
result2=s1.isdisjoint(s3)
print(result2)#运行结果:True -->即交集为空

(2)判断两个集合的包含关系

  集合A>=B  A.issubset(B)       集合A<=B   A.issuperset(B)

s1={1,2,3}
s2={4,5,6,1,2,3}
result1=s1.issubset(s2)
print(result1)#运行结果:True
result2=s1.issuperset(s2)
print(result2)#运行结果:False
result3=s2.issuperset(s1)
print(result3)#运行结果:True

(3)更新  A.update(B)  

s1={1,2,5}
s2={7,8}
s1.update(s2)
print(s1)#运行结果:{1, 2, 5, 7, 8}

三、补充:

  集合是可变类型,当定义不可变集合时,可使用s=frozenset(**)

s=frozenset('hello')
print(s)#运行结果:frozenset({'l', 'o', 'h', 'e'})
#不可进行添加删除等操作

六、Python集合定义和基本操作方法的更多相关文章

  1. Python - 集合与元素之集合定义和基本操作方法

    集合(set) 定义:由不同元素组成的集合,集合中是一组无序排列可hash的值(不可变的值)例如数字.字符串.元组,可以作为字典的key 定义集合: # 定义集合 s = {1, 2, 3, 3, 3 ...

  2. python集合set{ }、集合函数及集合的交、差、并

    通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...

  3. Python 集合set添加删除、交集、并集、集合操作符号

    在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...

  4. [转]python集合set

    Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

  5. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  6. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

  7. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  8. Python数据定义

    数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...

  9. Python 集合set()添加删除、交集、并集、集合操作详解

    集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...

随机推荐

  1. Mac Navicat premium 12 连接mysql8.0.21出现 'caching_sha2_password' 解决方案

    1.通过命令 select user,plugin from user where user='root'; 我们可以发现加密方式是caching_sha2_password. 2.  修改查看加密方 ...

  2. docker 镜像导入load、导出save以及重命名

    docker 导入导出操作 save 保存(导出)镜像 # 把镜像打包成 .tar # -o 要保存路径.tar # > 要保存路径.tar # docker save 镜像id > /存 ...

  3. 误删数据库怎么办?mysql 回滚,撤销操作,恢复数据

    刚刚不小心把数据库删掉了,于是想着上网上找找有没有可以恢复数据库的方法,没想到还真有,除了备份以外,还有以下方法. 在mysql有时执行了错误的update或者delete时导致大量数据错误恢复的办法 ...

  4. Spring Boot Scheduled定时任务特性

    SpringBoot中的Scheduled定时任务是Spring Boot中非常常用的特性,用来执行一些比如日切或者日终对账这种定时任务 下面说说使用时要注意的Scheduled的几个特性 Sched ...

  5. 让 Mongoose 不再重复链接数据库(如何正确连接以解决升级后的报错)

    升级了 Mongoose 后,发现项目打不开了.报错: MongooseError: You can not `mongoose.connect()` multiple times while con ...

  6. kernel升级模式RKS让人振奋

    前几天刚将我的ERP内核从701_rel 升级到721_ext_rel,看到721的说明了讲到,对于这次的更新,支持RKS(Rolling Kernel Switch)了,简单的讲,就是以后对于内核的 ...

  7. apscheduler(定时任务) 基于redis持久化配置操作

    apscheduler(定时任务) 基于redis持久化配置操作 安装模块 pip install apscheduler 导入模块配置 ## 配置redis模块 from apscheduler.j ...

  8. 笔记 | pandas之时间序列学习随笔1

    1. 时间序列自动生成 ts = pd.Series(np.arange(1, 901), index=pd.date_range('2010-1-1', periods=900)) 最终生成了从20 ...

  9. [已完结]CMU数据库(15-445)实验2-B+树索引实现(下)

    4. Index_Iterator实现 这里就是需要实现迭代器的一些操作,比如begin.end.isend等等 下面是对于IndexIterator的构造函数 template <typena ...

  10. 聊一聊:Service层你觉得有用吗?

    前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像 ...