一、字符串和列表的相互转化

之前写到想把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集合及深浅拷贝的更多相关文章

  1. python中的set集合和深浅拷贝

    一.基础数据类型的补充 1.str中的join算法,将列表转换成字符串,并用'_'(或其他) li=['李嘉诚','马化腾','刘嘉玲','黄海峰',] s='_'.join(li) print(s) ...

  2. 关于python中一切皆对象和深浅拷贝

  3. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  4. Python中的变量、引用、拷贝和作用域

    在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...

  5. Python中字典和集合的用法

    本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式  利用空间换时间 可以进行快速的查找 key 是唯一的 ...

  6. 认识python中的set集合及其用法

    python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...

  7. 2018.8.13 python中生成器和生成器表达式

    主要内容: 1.生成器和生成器函数 2.列表推导式 一.生成器 生成器是指就是迭代器,在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也 ...

  8. 2018.8.15 python 中的sorted()、filter()、map()函数

    主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...

  9. 2018.8.14 python中的内置函数(68个)

    主要内容: python中68个内置函数的功能及使用方法

随机推荐

  1. springboot系列之02-需要了解的宏观知识点

    未经允许,不得转载 原作者:字母哥博客 本文完整系列出自:springboot深入浅出系列 一.Spring Boot . Spring MVC .Spring对比 首先你需要明白一件事情:Sprin ...

  2. CPU的物理数、核心数、线程数

    最近了解下CPU的参数,主要是对常见的CPU参数指标:物理数.核心数以及线程数做了下了解.增长了点自己的见识,方便自己回忆和分享,记录下来.参考了网上的一些说明并加以整理,形成该随笔.主要参考链接如下 ...

  3. python使用代理ip

    python使用代理的方法有两种 1. #先创建代理ip对象 proxy_support = urllib.request.ProxyHandler({'https':'117.64.149.137: ...

  4. HTML5 相关扩展

    一.与类相关的扩展 class属性的应用极其广泛,与class的相关的操作也越来越简化,HTML5增加了 getElementsByClassName来查找元素,通过也增加了classList属性,方 ...

  5. 从零开始入门 K8s | 应用存储和持久化数据卷:存储快照与拓扑调度

    作者 | 至天 阿里巴巴高级研发工程师 一.基本知识 存储快照产生背景 在使用存储时,为了提高数据操作的容错性,我们通常有需要对线上数据进行 snapshot ,以及能快速 restore 的能力.另 ...

  6. Siege 网站性能压力测试工具使用入门

    Siege is an open source regression test and benchmark utility. It can stress test a single URL with ...

  7. 并发编程之原子操作Atomic&Unsafe

    原子操作:不能被分割(中断)的一个或一系列操作叫原子操作. 原子操作Atomic主要有12个类,4种类型的原子更新方式,原子更新基本类型,原子更新数组,原子更新字段,原子更新引用.Atomic包中的类 ...

  8. P3105 [USACO14OPEN]公平的摄影Fair Photography

    题意翻译 在数轴上有 NNN 头牛,第 iii 头牛位于 xi(0≤xi≤109)x_i\:(0\le x_i\le 10^9)xi​(0≤xi​≤109) .没有两头牛位于同一位置. 有两种牛:白牛 ...

  9. 《java编程思想》P140-P160(第七章复部+第八章部分)

    1.不用修饰符 修饰的方法或类,它们的修饰符是 默认修饰符,即 包访问权限(包内都可以用)(临时记的) 2. final数据: 对于基本类型,final使数值恒定不变,而对于对象引用,final使引用 ...

  10. 维护基于ASP.NET的网站的学习-SqlCommand类介绍及存储过程

    笔者目前在维护学校科技处的一个网站,目前学期初,教师申报项目操作多,出现了一些问题.前几天维护了一个验证码图片不显示的bug,今天想记录下这个解决了一整天的bug-老师项目结题需要手动修改数据库老师项 ...