六、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模块中,大家现在使 ...
随机推荐
- SQL Server解惑——查询条件IN中能否使用变量
在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS (SELECT 1 FRO ...
- innobackupex: Connecting to MySQL server with DSN 'dbi:mysql
[root@ma src]# innobackupex --user=root /root/backup --no-timestamp InnoDB Backup Utility v1.5.1-xtr ...
- leetcode 1240. 铺瓷砖(回溯,DFS)
题目链接 https://leetcode-cn.com/problems/tiling-a-rectangle-with-the-fewest-squares/ 题意: 用尽可能少的正方形瓷砖来铺地 ...
- 入门训练 - 蓝桥杯(Python实现)
A+B问题: 题目: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔,分别表示A.B. 输出格式 输出一行, ...
- 转 3 jmeter的两种录制方法
录制1-badboy(推荐) badboy是一款自动化测试工具,它可以完成简单的功能测试和性能测试.其实它是一款独立的测试工具,只不过它录制东西导出的格式适用于jmeter,所以我们经常把jmet ...
- Qt 自动化测试Test cutedriver
示例 https://github.com/nomovok-opensource/cutedriver-examples CuteDriver examples This repository con ...
- 学习Python之路
陆续学习python已经有一段时间了,但是真正的安下心来学习还是在最近的一个月时间里,虽然每天学习的时间很有限,但是通过点滴的学习让自己感到从未有过的充实,完全打掉了以往认学学习一门语言难于登天的心理 ...
- 从URL输入到页面展现到底发生什么?
目录 前言 一.URL 到底是啥 二.域名解析(DNS) 1.IP 地址 2.什么是域名解析 3. 浏览器如何通过域名去查询 URL 对应的 IP 呢 4. 小结 三.TCP 三次握手 1.TCP 三 ...
- 强连通分量 与 2-SAT
近期一直在刷这方面的题 因为没法学新知识 但又想写点什么 就水篇博文吧 引理 简单来说,在一个有向图中,若所有点之间两两互相直接可达,则将这个图成为强连通分量 强连通分量可以是某个有向图中的子图 求强 ...
- Docker中运行nginx
Docker中运行nginx 1.Docker中运行nginx 2.配置文件 2.1 nginx.conf 2.2 default.conf 3.docker的镜像可以挂什么卷 部分内容原文地址: C ...