python 中集合(set)以及深浅拷贝

基础知识点扩充
(1)进制转换(内置函数)

1)bin(十进制整数(int)) ##将一个十进制转换成二进制
2)oct(十进制整数(int)) ##将十进制转为八进制
3)int(‘字符串’,字符串对应进制(int)) ##其他进制转十进制,如 int(‘0xa’,16) ,为
将十六进制转换为十进制,其他进制操作一样
4)hex(十进制整数(int)) ##十六进制转十进制

(1)进制转换(format)

1)str.format(),为格式化字符串的函数,基本就是用{}代替%,而且可以接受参数,
位置可以不按顺序.即’’{1}{0}’’.format(‘a’,‘b’),则先a后b.
2)常用操作有:
‘’{ :.2f }’’.format( int ),将int数据类型保留两位小数输出,保留7位则是 { :.7f }, { :+.0f }不带小数
‘’{ :+.2f }’’.format( int ),将int数据类型保留两位小数且保留符号输出,正数带+,负数dai-
‘’{ :, }’’.format( int ),以逗号分割的数字形式,如1,000,000;{ :.2% },百分比保留两位小数{ :.2e },指数输出
3)格式化进制输出为"{:b}".format(int)二进制,{😮}八进制,{:d},十进制,{:x},十六进制

(2)列表与字符串相互转换
  1. s="".join(list) ##将列表转换成字符串,每个元素之间用""拼接
  2. list=s.split(’’) ##将字符串用""切割后转换成列表
(3)列表与字典在操作时出现的问题
  1. 列表在循环中进行删除操作,会出现遗漏现象,因此需要定义一个新列表收集要删除元素,然后遍历新列表在进行删除
  2. 字典在循环中删除和增加新的键值对会报错,因此要进行删除时也需要定义新列表
    3)dic=dict.fromkeys(‘可迭代对象’,赋值对象),此时操作会返回一个新字典,字典的键为可迭代对象每一个元素,但是值
    全唯一,都是赋值对象.此时如果赋值对象为可变的,则对其操作,新字典的所有值都会改变.
set集合
(1)特点
  1. set是可变数据类型(不可哈希),但是set中的元素必须是不可变的(可哈希)
    2)元素为不重复的,类似没有值的字典如{1,2,3,4}
    3)可以用来进行去重,如将列表转换成集合,再转换成列表能达到去重
    4)特别注意,set是没有索引的
    5)frozenset(),可以冻结集合,使之变为不可变列表
(2)增删改查
  1. set.add() ##增加一个新元素,重复的不会添加
  2. set.update('可迭代’对象) ##迭代增加,把可迭代对象中元素增加到set中
    3)set.pop() ##随机删除,且返回被删除的元素
    4)set.remove(‘元素’) ##指定删除某个具体元素
    5)set.clear() ##清空set集合
    6)set修改时只能先remove(),然后再add()
    7)查询,可以用for循环,for num in set:
(3)常用操作
  1. 求集合交集set=(set1&set2),或者set=(set1.intersection(set2))
  2. 求集合并集set=(set1|set2),或者set=(set1.union(set2))
  3. 求集合差集(前一个集合有,后一个没有)set=(set1-set2),或者set=(set1.different(set2))
  4. 求集合反交集()set=(set1^set2),或者set=(set1.symmetric_different(set2))
  5. 求集合子集set=(set1<set2),或者set=(set1.issubset(set2))
  6. 求集合超集set=(set1>set2),或者set=(set1.issuperset(set2))
深浅拷贝
  1. 赋值操作是不会产生新的对象的,如变量1=变量2,此时两个变量用的是一个对象(内存地址)
  2. 浅拷贝,只拷贝第一层元素内容,[:]切片 copy()
  3. 深拷贝,把这个对象的内容全部拷贝,需要引入copy模块.用deepcopy()
(1)浅拷贝

1)浅拷贝会产生一个新对象,但是会出现一个问题,内部的元素,第二层以及下层元素无法拷贝,
还是同一个对象,如列表中的列表用的是同一个对象,依旧会产生关联.
2) list1=[1,2,3],list2=list1[:]
3) list2 = list.copy()
4)可用id()查看,内存地址是否一样

(2)深拷贝
  1. 拷贝之后,会生成完全不同的两个对象,不会产生任何关联
  2. 引入copy模块,import copy
  3. list2 = copy.deepcopy(list1) ##深拷贝,拷贝list1所有元素,并存在一个新的内存地址中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值