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个内置函数的功能及使用方法
随机推荐
- 阿里云服务器CentOS6.9安装maven
1.下载maven http://maven.apache.org/download.cgi 2.移动到linux yangyuke用户下(此处由于我设置进入linux的是自定义用户yangyuke, ...
- Shell之文本排序命令
目录 Shell之文本排序命令 参考 wc命令 sort命令 uniq命令 Shell之文本排序命令
- 我的mongoDb之旅(二)
题序:上一回,咱们简单的操作了一些增减改查的操作,这一次,再来进行一场奇妙之旅 一.案例讲解 (1).字段有值与没值时的单条数据 第一条数据title这个字段(mysql用久了,习惯这么叫了)是没有数 ...
- java架构之路-(面试篇)Mysql面试大全
说一下mysql比较宏观的面试,具体咋写sql的这里就不过多举例了.后面我还会给出一个关于mysql面试优化的试题,这里主要说的索引和B+Tree结构,很少提到我们的集群配置优化方案. 1.索引是什么 ...
- 浅谈MVC&MTV设计模式
在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式.所谓全栈框架,是指除了封装网络和线程操作,还提供HTTP.数据库读写管理.HTML模板引擎等 ...
- 你不可错过的Java学习资源清单
学习Java和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难.基于这样的一个标准,我在这里为大家提供一份Java的学习资源清单. Ja ...
- php微信支付v3版本签名生成
前几天需要对接微信支付卡包营销活动需要对接微信新版SDKv3版 签名生成规则,微信的官方文档里面说明的还算可以吧,不过个人觉得不太理想- -. 自己调试的时候调试了半天才找了错误原因. https: ...
- .NET GC垃圾回收器
GC垃圾回收器简介 全名: Garbage Collector 原理: 以应用程序的根(root)为基础,遍历应用程序堆(heap)上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡 ...
- Stock Charts
Description You're in the middle of writing your newspaper's end-of-year economics summary, and you' ...
- Vijos 1067守望者的烦恼
背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫“闪烁”,这个技能可以把她传送到后面的监狱内查看,她比较懒,一般不查看 ...