Python基础七(深浅copy以及int,str,tuple,list,dic补充)
一:int,str,tuple,list,dic之间的转换及其补充
1.转换
1)int与str的转换
int ----> str str(int) str ----> int int(str) 条件:全部由数字组成的字符串可以转化成数字
2)int与bool的转换
int ----> bool 非0是True 0是False bool----> int True是1 False是0
3)str与bool的转换
str ----> bool 非空是True 空('')是False bool----> str 'True' 'False'
4)str与list的转化
str ----> list split() ()里有没有内容整个变成列表,()里有内容按内容分割成列表内元素,且()里内容不存在例如: s = 'alex,wusir,taibai' l1 = s.split() print(l1) 输出结果:['alex,wusir,taibai'] l2 = s.split(',') print(l2) 输出结果:['alex', 'wusir', 'taibai'] l3 = s.split('a') print(l3) 输出结果:['', 'lex,wusir,t', 'ib', 'i']list ----> str 用 ''.join()例如: li = ['alex','wusir','taibai'] s1 = ''.join(li) print(s1) 输出结果:alexwusirtaibai s2 = '_'.join(li) print(s2) 输出结果:alex_wusir_taibai
split ,join 的用法
5)list与tuple的转换 (与int和str之间的转换相似)
tu = (1,2,3,{},[]) l1 = list(tu) print(l1) 输出结果:[1, 2, 3, {}, []]li = [1,2,3,{},()] t1 = tuple(li) print(t1) 输出结果:(1, 2, 3, {}, ())
View Code
6)dic的特有类型与list的转换
dic = {'k1':'alex','k2':'太白','k3':'日天','name':'wusir'} print(dic.keys()) 输出结果:dict_keys(['k1', 'k2', 'k3', 'name']) print(list(dic.keys())) 输出结果:['k1', 'k2', 'k3', 'name'] print(dic.values()) 输出结果:dict_values(['alex', '太白', '日天', 'wusir']) print(list(dic.values())) 输出结果:['alex', '太白', '日天', 'wusir'] print(dic.items) 输出结果:不能这样写,需要两个变量接收 print(list(dic.items())) 输出结果:[('k1', 'alex'), ('k2', '太白'), ('k3', '日天'), ('name', 'wusir')]
View Code
2.tuple的补充
当元组只有一个元素组成并且没有逗号,则该元素是什么数据类型,整体就是什么数据类型.
tu = ([1,2,3]) tu1 = ([1,2,3],) print(tu,type(tu)) 输出结果:[1, 2, 3] <class 'list'> print(tu1,type(tu1)) 输出结果:([1, 2, 3],) <class 'tuple'> tu.append('333') print(tu,type(tu)) 输出结果:[1, 2, 3, '333'] <class 'list'>
3.list以及dic的删除
1)list的删除(用for循环时索引值在变化直接删除会报错)
li = [111,222,333,444,555] #将索引为奇数位的元素删除. # 第一种: del li[1::2] print(li)# 第二种: li = [111,222,333,444,555] l2 = [] for i in range(len(li)):if i % 2 == 0:l2.append(li[i]) li = l2 print(li)# 第三种: li = [111,222,333,444,555] for i in range(len(li)-1,0,-1): #倒着删除的时候索引不会发生变化,所以不会报错if i % 2 == 1:del li[i] print(li)
三种方式
2)dic的删除
不可变的数据类型:可哈希
dic = {'k1':'alex','k2':'太白','k3':'日天','name':'wusir'} #删除含'k'元素的键值对 li = [] for k in dic:if 'k' in k:li.append(k) #把dic的keys添加到列表中再去删除 for i in li:del dic[i] print(dic)
4.fromkeys()的用法
fromkeys()dic = dict.fromkeys('abc','alex') print(dic) dic中的keys(字符串)中的元素迭代增加成新的键key,value值不变化 输出结果:{'a': 'alex', 'b': 'alex', 'c': 'alex'}dic1 = dict.fromkeys([1,2,3],[]) print(dic1) dic中的keys(列表)中的元素 迭代增加成新的键key,value值不变 输出结果:{1: [], 2: [], 3: []}dic1[1].append('alex') print(dic1) dic中迭代增加后一个value变化,其他的value值对应变化成该值 输出结果:{1: ['alex'], 2: ['alex'], 3: ['alex']}
二.list深浅拷贝
1.赋值运算
比较下面两个 l1 = [1,2,3,4,'5'] l2 = l1 l1 = [1,2,3,4,'5',6] print(l1) 输出结果:[1, 2, 3, 4, '5', 6] print(l2) 输出结果:[1, 2, 3, 4, '5']l1 = [1,2,3,4,'5'] l2 = l1 对于赋值运算,就是指向同一内存地址 l1.append(6) print(l1) 输出结果:[1, 2, 3, 4, '5', 6] print(l2) 输出结果:[1, 2, 3, 4, '5', 6]
2.浅拷贝
第一种: l1 = [1,2,3,4,'5'] l2 = l1.copy() l1.append(6) print(l1) 输出结果:[1, 2, 3, 4, '5', 6] print(l2) 输出结果:[1, 2, 3, 4, '5']第二种 l1 = [1,2,3,[6,7,8],4,'5'] l2 = l1.copy() #补充:l2 = l1[:](相当于浅拷贝) l1[3].append('9') print(l1) 输出结果:[1, 2, 3, [6, 7, 8, '9'], 4, '5'] print(l2) 输出结果:[1, 2, 3, [6, 7, 8, '9'], 4, '5']对于浅copy来说,第一层都是独立的内存地址,从第二层开始,都是指向同一个内存地址,一变都变.
3.深拷贝
import copy l1 = [1,2,3,[6,7,8],4,'5'] l2 = copy.deepcopy(l1) l1.append('0') l1[3].append('9') print(l1) 输出结果:[1, 2, 3, [6, 7, 8, '9'], 4, '5', '0'] print(l2) 输出结果:[1, 2, 3, [6, 7, 8], 4, '5']对于深copy,无论多少层,在内存中都是两个独立的内存地址.
三.dic的深浅拷贝(与list的深浅拷贝类似)
1.浅拷贝
#第一种 dic1 = {1:'alex',2:['a','b'],3:('c','d')} dic2 = dic1.copy() dic1[1] = 'taibai' print(dic1) 输出结果:{1: 'taibai', 2: ['a', 'b'], 3: ('c', 'd')} print(dic2) 输出结果:{1: 'alex', 2: ['a', 'b'], 3: ('c', 'd')}#第二种 dic1 = {1:'alex',2:['a','b'],3:('c','d'),4:{'name':'zhu','age':18}} dic2 = dic1.copy() dic1[4]['name'] = 'taibai' print(dic1) 输出结果:{1: 'alex', 2: ['a', 'b'], 3: ('c', 'd'), 4: {'name': 'taibai', 'age': 18}} print(dic2) 输出结果:{1: 'alex', 2: ['a', 'b'], 3: ('c', 'd'), 4: {'name': 'taibai', 'age': 18}}
浅拷贝
2.深拷贝
import copy dic1 = {1:'alex',2:['a','b'],3:('c','d'),4:{'name':'zhu','age':18}} dic2 = copy.deepcopy(dic1) dic1[1] = 'taibai' dic1[4]['name'] = 'wusir' print(dic1) 输出结果:{1: 'taibai', 2: ['a', 'b'], 3: ('c', 'd'), 4: {'name': 'wusir', 'age': 18}} print(dic2) 输出结果:{1: 'alex', 2: ['a', 'b'], 3: ('c', 'd'), 4: {'name': 'zhu', 'age': 18}}
深拷贝
转载于:https://www.cnblogs.com/zhuzhaoyang/p/8378494.html
Python基础七(深浅copy以及int,str,tuple,list,dic补充)相关推荐
- python基础七之copy
浅拷贝 没有嵌套,则copy后完全不同,有嵌套,则copy后本体不同,嵌套相同. l1 = [1, 2, [4, 5, 6], 3] l2 = l1.copy() print(l1 is l2) # ...
- python基础七--集合
12.22 1.昨日内容回顾 小数据池:int:-5--256str:1.不能有特殊字符2.*int不能超过20编码:所能看到的最小构成单位叫字符ascii : 8位 1字节 表示1个字符unicod ...
- python中的深浅copy
深浅copy 复制,首先我们从切片技术说起.它应用于所有的序列,包括:列表,字符串,元祖.但是切片不能应用于字典,对于字典只能使用D.copy() 和 D.deepcopy()方法. 下面具体说一下深 ...
- Python基础教程:copy()和deepcopy()
在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望这些变动影响原来的列表或字典.要做到这一点,Python提供了名为copy的模块,其中包含copy() ...
- Python基础七(函数)
函数概述 函数:组织好的.可重复使用的.杉树能提高应用的模块性和代码的重复利用性.Python提供了很多的内置函数,比如len()等等,可以自行定义函数. 函数的定义 def 函数名(参数列表): ...
- python基础(四):元组(Tuple)、字典、字符串、序列
下面是小凰凰的简介,看下吧!
- Python基础数据类型补充及深浅拷贝
本节主要内容: 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 主要内容: 一. 基础数据类型补充 首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了. ...
- python第七关_python 基础第七篇
一. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把要删除的内容记录在列表中. 循环列表. 删除原列 ...
- python 的内存回收,及深浅Copy详解
一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...
最新文章
- 成都计算机大专学校公办,成都设有计算机应用技术的公办大专学校
- 教你在Linux下构建主、从域名服务器!
- LSTM拟合正弦曲线代码(转载)
- 动态生成HTML页面
- 【Linux】一步一步学Linux——at命令(133)
- 利用DOM进行照片的切换
- Oracl数据库中大数据的备份-1
- 并发编程-concurrent指南-线程池ExecutorService的使用
- java double add,Java中的DoubleStream.Builder add()方法
- Linux调试登陆Visual Studio
- 通过shell进行数学计算
- vb.net 教程6-8 线程优先级
- 探索性测试的分类与测试用例
- 评价好的良心浏览器,最后一个比360浏览器好用
- windows 10 删除壁纸历史记录
- 一些工程研发专业名词解释、 制造业常用术语、 BOM的分类
- 计算机二级office报名要求,计算机二级MS Office考试须知 这些你都需要知道
- 异形布局 canvas画龙
- WIN8.1硬盘安装及skype打英国免费电话激活
- 表情包受保护无法发送怎么破解和制作gif表情包
热门文章
- window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
- linux下mysql默认安装目录和常用命令
- getHandel redis_redis 使用 get 命令读取 bitmap 类型的数据
- python import random_python import random 后一直无法使用解决方法
- 哪个版本好_揭秘爱他美奶粉哪个版本好?不同版本爱他美奶粉区别差异是什么?...
- qprocess start怎么判断是否结束_致恋爱中的我们,怎么样来判断一个女人是否在骗你?...
- java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...
- 跳转html时请求头怎么取,如何获取a链接的请求头信息?
- 为什么说红黑树是“近似平衡”的?
- Django入门10--admin增强