Python集合 (set) 的增删改查及 copy()方法

这篇具有很好参考价值的文章主要介绍了Python集合 (set) 的增删改查及 copy()方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。

以下是集合最重要的两点:

1、去重,把一个列表变成集合,就自动去重了。
2、关系测试,测试两组数据之前的交集、差集、并集等关系。

一、集合的创建

 set1 = set({1,2,3,4,5})
 set2 = {1,2,3,4,5}
 set3 = set('abc')
 print(set1,set2,set3)  #{1, 2, 3, 4, 5} {1, 2, 3, 4, 5} {'c', 'b', 'a'}

二、添加集合元素的方法

add( )方法:

此方法是用来往集合里添加单个元素,如果已存在,则不会添加。

 set1 = {1,2,3,4,5}
 set1.add(6)
 print(set1)
 set1.add(1)
 print(set1)

update( )方法:

此方法是用来迭代的往集合里添加元素

set1 = {1,2,3,4,5}
set1.update('6')  #不能直接添加数字类型,因为数字类型不可迭代
print(set1)       # {1, 2, 3, 4, 5, '6'}

set1.update('abc')
print(set1)      #{1, 2, 3, 4, 5, 'c', 'a', '6', 'b'}

set1.update([1,7,8,9])
print(set1)     #{1, 2, 3, 4, 5, 'b', 7, 8, 9, 'a', 'c', '6'}

三、删除集合元素的方法

set1 = {1,2,3,4,5}
set1.pop()          #随机删除一个元素,将元素值返回

set1.remove('2')    #指定删除一个元素,找不到就会报错

set1.clear()        #清空整个集合

del set1            #删除整个集合

四、查询集合元素的方法

由于集合是无序的又没有索引,所以查询集合元素只有一种,那就是循环,如下:

set1 = {1,2,3,4,5}
for s in set1:
    print(s)
#结果如下:
# 1
# 2
# 3
# 4
# 5

五、集合的交集、并集等

set1 = {1,2,3,7,8}
set2 = {2,3,6,9}

print(set1&set2)  #交集{2, 3}
print(set1|set2)  #并集{1, 2, 3, 6, 7, 8, 9}
print(set1^set2)  #反交集{1, 6, 7, 8, 9}
print(set1-set2)  #差集{8, 1, 7}  独有的
print(set2-set1)  #差集{9, 6}  独有的


set1 = {1,2,3}      #set1为set2的子集
set2 = {1,2,3,4,5}  #set2为set1的超集13 print(set1 < set2)  #判断一个集合是否为另一个集合的子集,用' < '判断  如果是,返回:True

六、frozenset( )不可变集合(无法添加无法修改)

set1 = {1,2,3,4,5}
set2 = frozenset(set1)
print(set2,type(set2))
#结果为:frozenset({1, 2, 3, 4, 5}) <class 'frozenset'>

#创建方法如下:
set3 = frozenset({1,2,3})
print(set3)         # frozenset({1, 2, 3})

set4 = frozenset('abc') #迭代添加
print(set4)         #   frozenset({'a', 'b', 'c'})

七、copy( )与 deepcopy()

这两种方法用于复制一个变量然后赋值给另一个变量。
copy( )----浅复制

简单来讲,用此方法复制后的变量与原变量对应的内存地址是不一样的,修改它第一层的元素,另一个变量不会被修改

但是如果他们有嵌套(如列表里嵌套列表),那么第二层嵌套的列表与另一个变量所对应的列表的地址就是一个内存地址了,

这个时候,如果修改第二层的元素,则另一个变量也会被修改

用法:

 a = ['a','b','c']
 b = a.copy()
 print(b)
 #结果为:['a', 'b', 'c']

复制之后两个变量所对应的内存地址的问题:

先看赋值运算:

此时两个内存地址是一样的,更改一个列表的值,另一个也会被修改,如下:

li1 = [1,2,[3,4],5]
li2 = li1
print(li1 is li2)   # True

li2[0] = 0          #更改li2的值,li1也会被修改
print(li1)          #结果:[0, 2, [3, 4], 5]

再看看copy方法:

此时他们的内存地是不同的,更改一个列表的第一层元素的值,另一个不会被更改,如下:

li1 = [1,2,[3,4],5]
li2 = li1.copy()
print(li1 is li2)   #False

li2[0] = 0          #更改li2第一层的值,li1不会被修改
print(li1)          #[1, 2, [3, 4], 5]

但是,如果我们要修改一个列表的第二层元素的话,另一个列表就会被修改了,如下:

li1 = [1,2,[3,4],5]
li2 = li1.copy()
print(li1 is li2)   #False

li2[2][0] = 0          #更改li2第二层的值,li1就会被修改
print(li1)             #[1, 2, [0, 4], 5]

deepcopy( )----深复制

简单来讲,用此方法复制后的变量与原变量对应的内存地址是不一样的,不管有没有嵌套,修改它第一层的元素,另一个变量不会被修改

但是用这个方法之前,必须得导入copy包,如下:

import copy
li1 = [1,2,[3,4],5]
li2 = copy.deepcopy(li1)
print(li1 is li2)       #False
#Python小白学习交流群:711312441
li2[2][0] = 0          #更改li2第二层的值,li1也不会被修改
print(li1)             #[1, 2, [3, 4], 5]

八、如何将一个列表里的重复元素去掉

思路:将列表转换为集合,它会自动去重,然后再将集合转换为列表即可

代码:文章来源地址https://www.toymoban.com/news/detail-458795.html

 li1 = [1,2,3,2,1,5,6,7,6,5,8]
 set1 = set(li1)
 li1 = list(set1)
 print(li1)      #结果为:[1, 2, 3, 5, 6, 7, 8]

到了这里,关于Python集合 (set) 的增删改查及 copy()方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库增删改查及聚合查询SQL语句学习汇总

    目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table   查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的函数:now()  查询 查询表作列与列之间进

    2024年02月09日
    浏览(86)
  • 第9讲:使用ajax技术实现增删改查及分页显示功能(jQuery)

    本讲内容首先讲解jQuery对ajax的支持,分别讲解$.post,$.get,$.ajax等方法,这些方法的参数,使用方法及区别。最后对ajax的综合应用举例:在同一个页面实现新增,修改,删除学校资料,分页列表等功能,前端使用html静态页面,使用MySQL数据库,后台使用servlet技术实现。 基础环

    2024年02月11日
    浏览(39)
  • 使用Servlet完成单表的增删改查功能以及使用模板方法设计模式解决类爆炸问题(重写service模板方法)

    开发前的准备 导入sql脚本创建一张部门表 通过绑定属性资源配置文件的方式创建JDBC的工具类utils/DBUtil 分析系统的功能: 只要这个操作连接了数据库,就表示一个独立的功能 查看部门列表 , 新增部门 , 删除部门 , 查看部门详细信息 , 跳转到修改页面(动态的从数据库中获取信

    2024年02月10日
    浏览(46)
  • python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务

     config.yaml配置文件内容 功能就是userpass下的用户名和密码做增删改查,并重启hy2服务 直接上代码 add功能,带验证 del功能   查询功能  代码完成:chatgpt4 

    2024年02月22日
    浏览(52)
  • Java 中 Set集合常用方法

    对象名.add() 向Set集合中添加元素 (但不能添加重复元素,Set集合中不允许元素重复) addAll(Collection c) 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。 对象名.size() 返回 set 中的元素数(其容量) 对象名.isEmpty() 判断集合中是否有元素,若有则返回 true;

    2024年02月13日
    浏览(39)
  • Python 集合(Sets)1

    集合用于在单个变量中存储多个项。集合是 Python 中的 4 种内置数据类型之一,用于存储数据集合,其他 3 种是列表(List)、元组(Tuple)和字典(Dictionary),它们都具有不同的特性和用途。集合是一种无序、不可更改(*)、无索引的集合。 集合用大括号表示。 示例,创建

    2024年02月08日
    浏览(37)
  • Python 集合(Sets)2

    您无法通过引用索引或键来访问集合中的项。但是,您可以使用 for 循环遍历集合项,或者使用 in 检查集合中是否存在指定的值。 示例,遍历集合并打印值: 示例,检查集合中是否存在 \\\"banana\\\": 一旦创建了集合,您就不能更改其项,但可以添加新项。要向集合添加一

    2024年02月08日
    浏览(40)
  • Python 集合(Sets)3

    在 Python 中,有几种方法可以合并两个或多个集合。您可以使用 union() 方法,该方法返回一个包含两个集合中所有项的新集合,或使用 update() 方法,将一个集合中的所有项插入另一个集合中: 示例, union() 方法返回一个包含两个集合中所有项的新集合: 示例, update() 方法将

    2024年02月08日
    浏览(38)
  • Python 集合 set的使用

    创建集合使用{xxx} 或 set(), 但是创建空集合只能使用 set(), 空大括号{} 用来创建空的字典。 集合和列表区别: 集合可以去掉重复数据,即只存放不同的元素 集合中的元素是无序的,故不支持下标访问 创建方式不同,列表是用中括号表示,非空集合使用大括号表示。 有点类

    2024年02月12日
    浏览(43)
  • python学习28:python中的集合set

    1. 集合的定义 集合set是不支持重复元素的,而且是无序的 和列表、元组、字符串等定义基本相同: 列表使用:[] 元组使用:() 字符串使用:“” 集合使用:{} 基本语法: 2.集合的常规操作 集合set定义: 2.添加新元素,语法:集合.add(元素)。将指定元素,添加到集合内 结果:

    2024年04月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包