一: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补充)相关推荐

  1. python基础七之copy

    浅拷贝 没有嵌套,则copy后完全不同,有嵌套,则copy后本体不同,嵌套相同. l1 = [1, 2, [4, 5, 6], 3] l2 = l1.copy() print(l1 is l2) # ...

  2. python基础七--集合

    12.22 1.昨日内容回顾 小数据池:int:-5--256str:1.不能有特殊字符2.*int不能超过20编码:所能看到的最小构成单位叫字符ascii : 8位 1字节 表示1个字符unicod ...

  3. python中的深浅copy

    深浅copy 复制,首先我们从切片技术说起.它应用于所有的序列,包括:列表,字符串,元祖.但是切片不能应用于字典,对于字典只能使用D.copy() 和 D.deepcopy()方法. 下面具体说一下深 ...

  4. Python基础教程:copy()和deepcopy()

    在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望这些变动影响原来的列表或字典.要做到这一点,Python提供了名为copy的模块,其中包含copy() ...

  5. Python基础七(函数)

    函数概述 函数:组织好的.可重复使用的.杉树能提高应用的模块性和代码的重复利用性.Python提供了很多的内置函数,比如len()等等,可以自行定义函数. 函数的定义 def 函数名(参数列表):  ...

  6. python基础(四):元组(Tuple)、字典、字符串、序列

    下面是小凰凰的简介,看下吧!

  7. Python基础数据类型补充及深浅拷贝

    本节主要内容: 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 主要内容: 一. 基础数据类型补充 首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了. ...

  8. python第七关_python 基础第七篇

    一. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把要删除的内容记录在列表中. 循环列表. 删除原列 ...

  9. python 的内存回收,及深浅Copy详解

    一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...

最新文章

  1. 成都计算机大专学校公办,成都设有计算机应用技术的公办大专学校
  2. 教你在Linux下构建主、从域名服务器!
  3. LSTM拟合正弦曲线代码(转载)
  4. 动态生成HTML页面
  5. 【Linux】一步一步学Linux——at命令(133)
  6. 利用DOM进行照片的切换
  7. Oracl数据库中大数据的备份-1
  8. 并发编程-concurrent指南-线程池ExecutorService的使用
  9. java double add,Java中的DoubleStream.Builder add()方法
  10. Linux调试登陆Visual Studio
  11. 通过shell进行数学计算
  12. vb.net 教程6-8 线程优先级
  13. 探索性测试的分类与测试用例
  14. 评价好的良心浏览器,最后一个比360浏览器好用
  15. windows 10 删除壁纸历史记录
  16. 一些工程研发专业名词解释、 制造业常用术语、 BOM的分类
  17. 计算机二级office报名要求,计算机二级MS Office考试须知 这些你都需要知道
  18. 异形布局 canvas画龙
  19. WIN8.1硬盘安装及skype打英国免费电话激活
  20. 表情包受保护无法发送怎么破解和制作gif表情包

热门文章

  1. window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
  2. linux下mysql默认安装目录和常用命令
  3. getHandel redis_redis 使用 get 命令读取 bitmap 类型的数据
  4. python import random_python import random 后一直无法使用解决方法
  5. 哪个版本好_揭秘爱他美奶粉哪个版本好?不同版本爱他美奶粉区别差异是什么?...
  6. qprocess start怎么判断是否结束_致恋爱中的我们,怎么样来判断一个女人是否在骗你?...
  7. java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...
  8. 跳转html时请求头怎么取,如何获取a链接的请求头信息?
  9. 为什么说红黑树是“近似平衡”的?
  10. Django入门10--admin增强