2018.8.3 python中的set集合及深浅拷贝
一、字符串和列表的相互转化
之前写到想把xx类型的数据转化成yy类型的数据,直接yy(xx)就可以了,但是字符串和列表的转化比较特殊,相互之间的转化要通过join()和split()来实现。
例如:
列表转化成字符串:
lst = ['高新华','刘清扬','翠云彰']
s = '**'.join(lst)
print(s) #高新华**刘清扬**翠云彰
字符串转化成列表:
ss = '高新华**刘清扬**崔元章'
s =ss.split('**')
print(s) #['高新华', '刘清扬', '崔元章']
当join(字符串)时就会进行迭代:
s = "_".join("马化腾")
print(s) #马_化_腾
二、列表和字典都不能在循环的时候进行删除
由于删除元素会导致元素索引的改变,所以容易出现问题,尽量不要在循环中直接删去元素,可以把要删除的元素添加到一个新的列表中然后在批量删除。
lst = ['张国荣','张铁林','张国立','张曼玉','汪峰']
zhangs = []
for el in lst:
if el.startswith('张'):
zhangs.append(el)
for el in zhangs:
lst.remove(el)
print(lst)
print(zhangs)
dic = {'提莫':'冯提莫','发姐':'陈一发儿','55开':'卢本伟'}
lst = []
for k in dic:
lst.append(k)
for el in lst:
dic.pop(el)
print(dic)
三、dict中的fromkeys()可以帮我们通过list创建一个新的dict
dic = {'apple':'苹果','banana':'香蕉'}
ret = dic.fromkeys('orange','橘子')#直接用字典去访问fromkeys,不会对原字典产生影响
# {'o': '橘子', 'r': '橘子', 'a': '橘子', 'n': '橘子', 'g': '橘子', 'e': '橘子'}
ret = dict.fromkeys('abc',['哈哈','呵呵','吼吼'])
#{'a': ['哈哈', '呵呵', '吼吼'], 'b': ['哈哈', '呵呵', '吼吼'], 'c': ['哈哈', '呵呵', '吼吼']}
print(ret)
四、set集合
集合中的元素必须是可哈希(int,str,bool,tuple)的,不重复的,里面的元素是无序的,而集合本身是不可哈希的(可使用frozenset)。
集合可以进行增删改查,其重要功能是去重。
s = {"周杰伦", "的老婆","叫昆凌", (1,2,3), "周杰伦"}
print(s)#{"周杰伦", "的老婆","叫昆凌", (1,2,3)}
五、深浅拷贝
浅拷贝:只拷贝第一层内容 [:] copy()
st1 = ['金毛狮王','紫衫龙王','青翼蝠王','白眉鹰王',['张无忌','赵敏','周芷若']]
lst2 = lst1[:]
print(lst1) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若']]
print(lst2) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若']]
print(id(lst1[4])) #
print(id(lst2[4])) #
lst1 = ['金毛狮王','紫衫龙王','青翼蝠王','白眉鹰王',['张无忌','赵敏','周芷若']]
lst2 = lst1[:]
lst1[4].append('小昭')
print(lst1) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若', '小昭']]
print(lst2) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若', '小昭']]
print(id(lst1[4])) #
print(id(lst2[4])) #
深拷贝:把这个对象内部的内容全部拷贝一份. 引入copy模块.
模式:
import copy
列表2 = copy.deepcopy(列表1)
import copy
lst1 = ['金毛狮王','紫衫龙王','青翼蝠王','白眉鹰王',['张无忌','赵敏','周芷若']]
lst2 = copy.deepcopy(lst1)
lst1[4].append('小昭')
print(lst1) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若', '小昭']]
print(lst2) #['金毛狮王', '紫衫龙王', '青翼蝠王', '白眉鹰王', ['张无忌', '赵敏', '周芷若']]
print(id(lst1[4])) #
print(id(lst2[4])) #
2018.8.3 python中的set集合及深浅拷贝的更多相关文章
- python中的set集合和深浅拷贝
一.基础数据类型的补充 1.str中的join算法,将列表转换成字符串,并用'_'(或其他) li=['李嘉诚','马化腾','刘嘉玲','黄海峰',] s='_'.join(li) print(s) ...
- 关于python中一切皆对象和深浅拷贝
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- Python中字典和集合的用法
本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式 利用空间换时间 可以进行快速的查找 key 是唯一的 ...
- 认识python中的set集合及其用法
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...
- 2018.8.13 python中生成器和生成器表达式
主要内容: 1.生成器和生成器函数 2.列表推导式 一.生成器 生成器是指就是迭代器,在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也 ...
- 2018.8.15 python 中的sorted()、filter()、map()函数
主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...
- 2018.8.14 python中的内置函数(68个)
主要内容: python中68个内置函数的功能及使用方法
随机推荐
- jquery 取得select选中的值
1.取得选中的值 jQuery("#select").val();是取得选中的值 2.取得的文本 jQuery("#select option:selected&quo ...
- mysql执行过程以及顺序
前言:mysql在我们的开发中基本每天都要面对的,作为开发中的数据中间件,mysql承担者存储数据和读写数据的职责.因为学习和了解mysql是至关重要的,那么当我们在客户端发起一个sql到出现详细的查 ...
- Kubernetes 系列(一):本地k8s集群搭建
我们需要做以下工作: (1)安装VMware,运行CentOs系统,一个做master,一个做node. (2)安装K8s. (3)安装docker和部分镜像会需要访问外网,所以你需要做些网络方面的准 ...
- .netcore+vue+elementUI 前后端分离---支持前端、后台业务代码扩展的快速开发框架
框架采用.NetCore + Vue前后端分离,并且支持前端.后台代码业务动态扩展,框架内置了一套有着20多种属性配置的代码生成器,可灵活配置生成的代码,代码生成器界面配置完成即可生成单表(主表)的增 ...
- 品Spring:真没想到,三十步才能完成一个bean实例的创建
在容器启动快完成时,会把所有的单例bean进行实例化,也可以叫做预先实例化. 这样做的好处之一是,可以及早地发现问题,及早的抛出异常,及早地解决掉. 本文就来看下整个的实例化过程.其实还是比较繁琐的. ...
- Docker下配置nacos
前言 近段时间在学dubbo,dubbo-admin死活装不上,无论是本地还是docker,所以把目光投向了其他配置中心,我选定的是阿里新开源的nacos. 正文 拉取镜像到本地docker dock ...
- charles抓包小程序
charles抓包小程序: 原理呢,简单理解,通过charles开代理,然后手工wifi设置代理上网. 但是要做一些准备:手机要安装charles 证书. 注意的是安卓和ios有区别:目前安卓7.0版 ...
- 在线影视平台人人影视 v3.2.1 绿色便携版
人人影视是一款可以方便观看美剧和国外大片的视频播放软件,支持在线观看.网盘转存.离线缓存.所有客户端离线下载均加密传输,不用担心任何安全问题.全程加密的 P2P 传输,让热门资源下载更快,海外党不再惧 ...
- [Vijos] 遭遇战
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- .NET Core使用App.Metrics监控消息队列(一):初探
一.简介 App Metrics是一个开放源代码和跨平台的.NET库,用于记录应用程序中的指标.App Metrics可以在.NET Core或也支持.NET 4.5.2的完整.NET框架上运行. A ...