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个内置函数的功能及使用方法
随机推荐
- webservice传输文件的三种方式
1, 在接口中不定义,直接以附件形式传输. 2, 在接口参数中定义byte[]类型,文件在xml中以base64编码传输. 3, 在接口参数中定义DataHandler类型,然后使用MTOM形式来进行 ...
- Highly Efficient Analysis of Glycoprotein Sialylation in Human Serum by Simultaneous Quantification of Glycosites and Site-Specific Glycoforms (通过同时定量糖基化位点和位点特异性糖型来高效分析人血清中的糖蛋白唾液酸化)-阅读人:陈秋实
期刊名:Journal of Proteome Research 发表时间:(2019年9月) IF:3.78 单位: 中国科学院大连化学物理研究所 中国科学院大学 大连医科大学第二附属医院 物种:人 ...
- Axure实现banner功能
1.添加一个动态面板,添加上一张.下一张及当前banner对应的序号圆圈,如图所示: 当添加好元素后,实现自动轮播:点击[轮播图面板]页面:选中动态面板:右边添加事件编辑栏——属性——载入时——添加动 ...
- JS/JQuery 禁用超链接a
JS // 禁用超链接元素elem ; document.getElementById(elemID).setAttribute('disabled', 'disabled'); // 启用超链接元素 ...
- python pytesseract——3步识别验证码的识别入门
验证码识别是个大工程,但入门开始只要3步.需要用到的库PIL.pytesserac,没有的话pip安装.还有一个是tesseract-ocr 下载地址:https://sourceforge.net/ ...
- Spring MVC学习 ( RESTful)
是一套规则,不同的系统之间(Vue java Python C# PHP)具体四种不同类型的HTTP 请求分别表示四种基本操作(CRUD) GET :查询(R) POST:添加(C) PUT:修改( ...
- mysql配置默认字符集为UTF8mb4
[client] default-character-set=utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = ut ...
- slf4j+logback&logback.xml
添加maven依赖 <dependencies> <!--https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> ...
- Docker 安装Oracle
1.使用docker 命令搜索oracle 镜像,前提是已安装了Docker docker search oracle 2.下载相应版本的oracle 镜像 docker pull sath89/o ...
- 用深度学习做命名实体识别(七)-CRF介绍
还记得之前介绍过的命名实体识别系列文章吗,可以从句子中提取出人名.地址.公司等实体字段,当时只是简单提到了BERT+CRF模型,BERT已经在上一篇文章中介绍过了,本文将对CRF做一个基本的介绍.本文 ...