python入门到秃顶(3):字符串格式化输出和浅层拷贝

一丶字符串拼接

在这里插入图片描述

  • 1,字符串直接相加

    s = 'hello'
    a = 'jack'
    s+a
    
  • 2,jion() 用来拼接

    ​ 用法:要在join前面+上一个空的字符串

    ''.join('asd')				# 'asd'
    ' '.join('asd')				# 'a s d'	前面的字符串里面有个空格,就
    ' '.join(['a','s','d'])		# 'a s d'	以空格来拼接字符串
    ','.join(('你好','jack'))	  #  '你好,jack' 
    

二丶字符串的格式化

  • 1,%s 是一个占位符 掌握%s %r 后面跟上我想要传入的数据 %d传整字 %f浮点数 %cAscall值

    'hello %s' % 'jack'			 'hello jack'
    '%s %s %s' % ('a','b','c')	 'a b c'		# 传入多个字符
    '%s %d %f %c %o %x %e' % ('a',1,1,97,20,20) # 传入(字符串 整数 浮点数) 输出Ascall 输出八进制 输出十六进制 输出科学计数法
    
    '%16.3f' % 10.3			# 16代表字符串长度,3位保留3位小数,f位浮点数
    '%-16.3f' % 10.3		# 负号代表左对齐
    '%+16.3f' % 10.3		# 正好代表右对齐(默认右对齐)
    '%r' % 参数			   # 消除参数的原始含义  
    >>> print('%r' % '\r')
    '\r'
    
  • 2,format使用

    '{} {} {}'.format('a','b','c')			# 普通传参
    'hello {}'.format('jack')
    '{a} {b} {c}'.format(a='a',b='b',c='c') # 关键字传参!!!
    '{0} {1} {2}'.format('a','b','c')		# 索引位置传参
    '{2} {0} {1}'.format('a','b','c')
    '{:.2%}'.format(0.3333)	转换为百分数,2代表保留2位小数
    >>> f = 'hello {}'.format
    >>> f('!')					# 把format当成一个函数使用
    'hello !'					
    

  • 二进制,逢二进一 10以二进制的形式显示:0001

    0000 代表 0 0001代表1 0010代表2 0011代表3 0100代表4 逢二进一

  • 八进制,逢八进一 10以八进制的形式显示:0012

    0000代表0 0001代表1 … 0007代表7 0010代表8 逢八进一

  • 十六进制,逢十六进一 123456789ABCDEF

  • 十进制,逢十进一

函数对象和函数调用的区别:

>>> list				list为函数对象
<class 'list'>
>>> list()				list()为函数调用
[]

三丶深浅复制

  • 1, 给变量复制时内存里的活动
    在这里插入图片描述
  • 2,浅复制(修改原数据会改变copy数据) 主要发生在列表嵌套列表里面

    >>> s = [1,2,3,[4,5,6]]
    >>> s1 = s.copy()
    >>> s
    [1, 2, 3, [4, 5, 6]]
    >>> s1
    [1, 2, 3, [4, 5, 6]]
    >>> id(s),id(s1)
    (2493266256968, 2493266502344)
    >>> id(s[-1][1]),id(s1[-1][1])
    (1469232320, 1469232320)		它们的内存地址都是一样的
    
    >>> s[-1][0] = 100			
    >>> s						当我修改s的嵌套列表,copy下来的s1里的也改变
    [1, 2, 3, [100, 5, 6]]		这就是浅复制,原始数据改变,copy的也会改变
    >>> s1
    [1, 2, 3, [100, 5, 6]]
    
    为什么会发生浅复制,浅复制的根本原因在于,s[-1]和s1[-1]这两个嵌套列表在内存空间里面指向的是同一个列表的内存空间,所以当这个嵌套列表里面的元素改变时,不管是s,还是s1 里面的嵌套列表里面的元素就会改变。而外面这个大列表不会发生浅层复制的原因就是在于s和s1里面的大列表在内存空间里指向的不是同一个内存地址,所以就算改变了大列表里面的元素,copy的也是不受影响的在这里插入图片描述

    应该会更形象一点:在这里插入图片描述
    在这里插入图片描述

  • 3,深复制
    在这里插入图片描述

    在这里插入图片描述

四丶bytes和byterray 字节序列对象(了解)(不允许修改)

  • 1,bytes
    在这里插入图片描述
    如:
    在这里插入图片描述

    如果不以0填充,想自己自定义(传入字符串):

    在这里插入图片描述

*2, bytearray(可以修改)
在这里插入图片描述

都会以0填充
在这里插入图片描述

自定义数组
在这里插入图片描述
修改数组里面的内容

b = bytearray(b'dsd')

在这里插入图片描述
总结:

​ 1,字符串的拼接有两个字符串直接相加 或 ‘’.join 这两个方法

​ 2,字符串的格式化输出有%s或format方法

​ 3,深浅复制的含义,浅复制只是不是真的复制,改变它的嵌套列表的值,copy下来和用切片[:]切下来的都会改变,而深复制就不会

​ 4,bytes和bytearray都是字节序列对象,bytearray对象可以修改,会以Ascall值返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值