Python集合set()使用的方法详解


Posted in Python onMarch 18, 2022

在python3中按数据类型的可变与不可变大致分为如下几种类型:

  • 不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。

1.集合的特点

1.无序不重复没有重复的元素,且元素无序存放(故集合没有下标和切片),set的只要作用就是用来给数据去重。

2.使用时为 { },与字典区分:当花括号里的元素不是键值对的时候为集合。

3.集合的底层其实是通过字典来封装的

2.set的建立

可以使用大括号 { } 或者 set() 函数创建集合,但是注意如果创建一个空集合必须用 set() 而不是 { },因为{}是用来表示空字典类型的。

1.用set()函数创建set集合

person2 = set(("hello","jerry",133,11,133,"jerru")) #只能传入一个参数,可以是list,tuple等 类型
print(len(person2))
print(person2)
'''
5
{133, 'jerry', 11, 'jerru', 'hello'}
'''

2.add()

a=set()
a.add("a")
a.add("b")
print(a)

3.用{}创建set集合。空set集合用set()函数表示,不可a={}。

person ={"student","teacher","babe",123,321,123} #同样各种类型嵌套,可以赋值重复数据,但是存储会去重
print(len(person))  #存放了6个数据,长度显示是5,存储是自动去重
print(person) #但是显示出来则是去重的
'''
5
{321, 'teacher', 'student', 'babe', 123}
'''
#空set集合用set()函数表示
person1 = set() #表示空set,不能用person1={}
print(len(person1))
print(person1)
'''
0
set()
'''

4.set集合的转化

a=["awe","weg","dawqgg"]
c=set(a)
print(c)
b="chenshuagege"
d=set(b)
print(d)
al=("233","34455")
aw=set(al)
print(al)

3.常见使用注意事项

#set对字符串也会去重,因为字符串属于序列。
str1 = set("abcdefgabcdefghi")
str2 = set("abcdefgabcdefgh")
print(str1,str2)
print(str1 - str2) #-号可以求差集
print(str2 - str1)  #空值
#print(str1 + str2)  #set里不能使用+号
====================================================================
{'d', 'i', 'e', 'f', 'a', 'g', 'b', 'h', 'c'} {'d', 'e', 'f', 'a', 'g', 'b', 'h', 'c'}
{'i'}
set()

4.set的常用方法

4.1 set集合的增删改查操作

  • add 用于加入元素
  • update 用于集合的合并
  • remove 当移除一个集合里没有的元素时,报错
  • discard 当移除一个集合里没有的元素时,不会报错
  • del 仅可对集合本身使用,不可用于元素,因为元素在集合里为混乱排放,无下标
  • clear 清空集合,留下空集合
  • pop 随机删除集合里的一个元素
#1.给set集合增加数据
person ={"student","teacher","babe",123,321,123}
person.add("student") #如果元素已经存在,则不报错,也不会添加,不会将字符串拆分成多个元素,区别update
print(person)
person.add((1,23,"hello")) #可以添加元组,但不能是list
print(person)
'''
{321, 'babe', 'teacher', 'student', 123}
{(1, 23, 'hello'), 321, 'babe', 'teacher', 'student', 123}
'''
# update用于集合的合并,可以把多个集合添加到一个集合里面。可以iterar的数据都可以添加成set集合
person.update("abc")#使用update不能添加字符串,会拆分
print(person)  #会将字符串拆分成a,b,c三个元素
'''
{321, 1, 3, 'b', 'c', 'teacher', (1, 23, 'hello'), 'a', 'babe', 'student', 123}
'''
set1 = set()
set1.add('武动乾坤')
set2 = {'jsy', '稻香', '爱的代价', '大碗宽面'}
set2.update(set1)
print(set2)
'''
{'大碗宽面', 'jsy', '爱的代价', '稻香', '武动乾坤'}
'''
#2.从set里删除数据
person.remove("student")#按元素去删除
print(person)
#print("student")如果不存在 ,会报错。
'''
{321, 1, 3, 'c', 'b', (1, 23, 'hello'), 'teacher', 'babe', 'a', 123}
'''
person.discard("student")#功能和remove一样,好处是没有的话,不会报错
ret = person.pop() #在list里默认删除最后一个,在set里随机删除一个。
print(person)
print(ret) #pop()返回的是被删除掉的那一项
'''
{1, 3, (1, 23, 'hello'), 'teacher', 'b', 'a', 'babe', 123, 'c'}
'''
#3.更新set中某个元素,因为是无序的,所以不能用角标
#所以一般更新都是使用remove,然后在add
#4.查询是否存在,无法返回索引,使用in判断
if "teacher" in person:
    print("true")
else:
    print("不存在")
'''
true
'''
#5.终极大招:直接清空set
print(person)
person.clear()
print(person)
'''
set()
'''

4.2 其它用法

交 并 差集操作交集 intersection;并集 union;差集 difference
可用运算符表示交集,并集,差集交集 & 并集 | 差集 -

#取两者的交集
b={1,23}
a={23,5}
ret=b.intersection(a)
print(ret)
#取两者的交集,intersection_update会改变b的内容
b={1,23}
a={23,5}
b.intersection_update(a)
print(b)
#union是把两个set集合合起来
a={"a","b","c"}
b={"a","wa"}
wt=a.union(b)
print(wt)
#difference表示的意思是a中的内容b是没有的,但是这个不会修改a自身的值,而是付给ret了
a={"12","14","234"}
b={"12","23"}
ret=a.difference(b)
print(ret)
#difference_update表示的意思是a中的内容b是没有的,执行完,会修改a的内容
a={"12","14","234"}
b={"12","23"}
a.difference_update(b)
print(a)
#symmetric_difference为把两个set集合里相同的内容当作边然后取这边两边的内容
a={"a","b","c"}
b={"a","wa"}
ret=a.symmetric_difference(b)
print(ret)
a.symmetric_difference(b)
print(a)
#可用运算符表示交集,并集,差集
set2 = {1, 2, 3, 4, 5}
set3 = {3, 4, 5, 6, 7, 8, 9} 
print(set2 & set3)  # 交集符号  &
print(set2 | set3)  # 并集符号 |
print(set2 - set3)  # 差集符号 -
b={1,23}
a={23,5}
#如果a与b有集合的话,就返回false;如果没有集合的话,就返回true
ret=b.isdisjoint(a)
print(ret)
b={1,23,5}
a={23,5}
#issuperset说明b是否是a的父亲,如果是就输出true,如果不是输出false
ret=b.issuperset(a)
print(ret)
b={1,23,5}
a={23,5}
#b是否是a的子,如果是就输出true,如果不是就输出false
ret=b.issubset(a)
print(ret)

5.列表,元组,字典,集合 

  • list: 允许重复,有序,有下标,可切片
  • tuple: 允许重复,里面元素不能进行增删改,只能查看
  • dict: 字典里的元素以键值对的形式存在 键:唯一性 值:可以重复
  • set: 元素不允许重复,且具有无序性

5.1 它们之间的类型转换

1.列表,元组,集合,此三者均可相互转

list----->tuple,set 列表转集合时,注意不能有重复元素,否则长度改变

tuple----->list,set

set----->list,tuple

2.当字典参与的转换时,需特殊对待

dict----->list,tuple 仅能将字典的键转换,不能将值转换

list----->dict 列表内必须是列表或是元组,且其中只有两个元素时,可转

list = [['a', {1}], ('', 2), ('c', 3)]
print(dict(list))

输出:

{‘a’: {1}, ‘’: 2, ‘c’: 3}

5.2 集合和列表方法上的区别

正是由于集合的无序性,没有下标,故在方法上与列表有些差异。

  • append(添加元素) extend(实现列表的拼接)
  • insert(在某一下标插入元素) ----->listadd(添加元素) update(两个集合的合并) ---->set

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容! 

Python 相关文章推荐
python实现rest请求api示例
Apr 22 Python
python通过post提交数据的方法
May 06 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
python实现简单加密解密机制
Mar 19 Python
python实现图片上添加图片
Nov 26 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
Python数据正态性检验实现过程
Apr 18 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
浅析Python requests 模块
Oct 09 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
基于Python实现流星雨效果的绘制
Python中with上下文管理协议的作用及用法
Mar 18 #Python
python 判断文件或文件夹是否存在
Mar 18 #Python
分享Python获取本机IP地址的几种方法
Mar 17 #Python
使用python求解迷宫问题的三种实现方法
Python超详细分步解析随机漫步
yolov5返回坐标的方法实例
Mar 17 #Python
You might like
CI框架中zip类应用示例
2014/06/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php中final关键字用法分析
2016/12/07 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
Python yield 小结和实例
2014/04/25 Python
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python实现从web抓取文档的方法
2014/09/26 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Python新手学习装饰器
2020/06/04 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
新闻编辑自荐信
2013/11/03 职场文书
车间调度岗位职责
2013/11/30 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
学习退步检讨书
2014/09/28 职场文书
琅琊山导游词
2015/02/05 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
python三子棋游戏
2022/05/04 Python