Python
大家好!我们学了序列类型有字符串(str)、列表(list)、元组(tuple),今天我们来学习一下字符串的拼接、格式化输出与深浅复制。开发工具:IDLE (Python 3.7 64-bit) (注:不需要3.7版本的也行,只需要Python3的版本都可以,32位和64位的系统都可以不需要纠结)
请点击Python的图片
我们在开始学习之前,我没那么是否记得怎么将几个字符串(str)拼接到一起呢?
简单的字符串拼接方法
字符串(str)拼接的方法格式化字符串%s的方法
%s占位符的用法
join的方法,主要是针对iterable可迭代对象,大家请注意序列类型都是可迭代的对象。就是说,序列类型:字符串(str)、列表(list)、元组(tuple)都是可迭代对象,故都可以用join方法来拼接参数。
join的方法
join的方法
format的方法,'{}{}{}'.format(a,b,c) (注:{}里面可以填入与后面相对应的符号),与格式化字符串的方法有一点的类似。format方法详解:'{}{}{}'.format(a,b,c), 当{}里面是空的时候,里面默认索引为0,1,2按format括号里的顺序依次填入, '{1}{2}{0}'.format(a,b,c)。当{}里面有索引值时,按前面的索引值将后面的每项依次填入'{n1}{n2}{n3}'.format(n1=a,n2=b,n3=c){}里面可以指定对象名称,后面通过赋值的方式给前面的相应的值,后面是无序。
format方法
2.格式化输出
格式化%s
格式化%s
格式化整数(%d)和格式化小数(%f).
格式化小数(%f)和格式化整数(%d)
格式化ASCLL码(%c)。
格式化ASCLL码
格式化八进制( %o)。
格式化八进制
格式化十六进制(%x).
格式化十六进制
格式化科学计数法(%e).
格式化科学计数法
"+"、“-”显示它的正负。
显示它的正负
"\n”表示的是换行符;“\t”制表符,实质上是在两个参数中间用四个空格隔开。
换行符(\n)和制表符(\t)
3.深浅复制(只会出现在嵌套列表中)
定义一个列表li=['a','b'],然后在定义一个列表L2=[1,li]输出L2的结果就是[1,['a','b']](这样就可以定义一个嵌套列表)。我们在学习深浅复制的时候,需要引入一个模块impot copy.
L浅复制=L2.copy()输出L浅复制的结果为[1,['a','b']]
L深复制=copy.deepcopy(L2)输出L深复制的结果为[1,['a','b']],深复制和浅复制的输出结果类似,怎么样才能让两个值有所区别呢?
我们可以在li被嵌套的列表中插入值,li.append('c')输出L浅复制的结果为[1,['a','b','c']],被嵌套的列表li输出结果为[1,['a','b','c']].我们可以看出当被嵌套列表li发生改变的时候我们L浅复制的输出结果也随之改变。
L深复制的输出结果仍然为[1,['a','b']],我们可以发现即使被嵌套列表li发生改变,L深复制的输出结果仍然不变。
然后我们查看他们的内存地址ID,id(li)内存地址输出:46646536,id(L浅复制[1])用的是被嵌套列表的索引值查看,输出结果为:46646536。
最后我们看L深复制的内存地址ID,id(L深复制[1])用的是被嵌套列表的索引值查看,输出结果为:46646152。
总结:我们用deepcopy深复制的内存地址是永远不变的,改变的是浅复制的内存地址,深复制的一直默认保持的是原来的参数的最初状态。即使添加值,也无法改变深层复制的内容。
浅复制和深复制
好了今天的内容很轻松,有时间搭建可以多探索多实践,这样有助于理解。成功路上一直很孤独,要抵达别人看不到的风景,就要承受别人所没有承受的寂寞。加油!我们一直在路上。