六、Python集合定义和基本操作方法
一、集合的定义方法及特点
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集合定义和基本操作方法的更多相关文章
- Python - 集合与元素之集合定义和基本操作方法
集合(set) 定义:由不同元素组成的集合,集合中是一组无序排列可hash的值(不可变的值)例如数字.字符串.元组,可以作为字典的key 定义集合: # 定义集合 s = {1, 2, 3, 3, 3 ...
- python集合set{ }、集合函数及集合的交、差、并
通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...
- Python 集合set添加删除、交集、并集、集合操作符号
在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...
- [转]python集合set
Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...
- python集合与字典的用法
python集合与字典的用法 集合: 1.增加 add 2.删除 •del 删除集合 •discard(常用)删除集合中的元素 #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- Python数据定义
数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...
- Python 集合set()添加删除、交集、并集、集合操作详解
集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...
随机推荐
- Hdfs手动执行Balance
问题发现: 经巡检,服务器中一台节点的hadoop磁盘占用过多,是其它节点的三倍,导致数据严重不均衡. 解决过程: 两种命令: hadoop的bin目录下,运行命令start-balancer.sh ...
- linux系统中set、env、export关系
set 用来显示shell变量(包括环境变量.用户变量和函数名及其定义),同时可以设置shell选项来开启调试.变量扩展.路径扩展等开关env 用来显示和设置环境变量export 用来显示和设置导出到 ...
- 实现简易版德州扑克|学习麻瓜编程以项目为导向入门前端 HTML+CSS+JS
实现简易版德州扑克 1.先上达到网页效果图(简易版德州扑克) 网页分为发牌区和牌池,上面为发牌区,下面是牌池区 2. 代码实现 2.1 HTML和JS代码 ` <link rel="s ...
- DOI技术扫盲一
DOI: desktop office intergration 桌面办公软件集成简单的将,就是我们在Windows桌面中打开的办公软件(如:word,excel,pdf等等)可以在SAP系统进 ...
- B树的进化版----B+树
C++为什么叫C plus plus?这是由于C++相当于继承C的语法后,增加了各方面的能力,所扩展出的一种新语法.在软件领域中 plus 有增加的味道.在这里B +树也一样,是B树的增强版.在学习B ...
- 输入5V,输出5V限流芯片,4A限流,短路保护
USB限流芯片,5V输入,输出5V电压,限流值可以通过外围电阻进行调节,PWCHIP产品中可在限流范围0.4A-4.8A,并具有过压关闭保护功能. 过压关闭保护: 如芯片:PW1555,USB我们一半 ...
- pymysql模块使用介绍
pymysql 我们要学的pymysql就是用来在python程序中如何操作mysql,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用 ...
- Flask中的g到底是个什么鬼?
g到底是个什么鬼? 在一次请求请求的周期,可以在g中设置值,在本次的请求周期中都可以读取或复制. 相当于是一次请求周期的全局变量. from flask import Flask,g app = Fl ...
- pycharm2021永久激活
Pycharm破解版地址: 链接: https://pan.baidu.com/s/1dEkzKRFMaeNjWF4h7y2TdQ 提取码: eqr3 Anaconda地址:版本是python3.6 ...
- Ajax编程基础
目录 Ajax编程基础 传统网站中存在的问题 Ajax概述 Ajax的应用场景 Ajax的运行环境 Ajax运行原理及实现 Ajax运行原理 Ajax的实现步骤 1.创建Ajax对象 2.告诉Ajax ...