字符串拼接、格式化输出、深浅复制
1、字符串拼接
a = 'hello'
b = 'python'
c = '!'
第一种:+ 号拼接
a + b + c
第二种: %s ,占位符
'%s %s %s' % (a, b, c)
第三种: ' '.join
' '.join(['a', 'b', 'c']) # 参数是可迭代对象
' '.join([1,2]) # 会报错, 必须要是 str 型
第四种方法: .format() 跟 %s 相似,用到的是 {} 进行占位
'{} {} {}'.format(a, b, c) # 默认按照 0, 1, 2
'{1}[2]{0}'.format(a,b,c) #指定索引,后面是无序的
{} 里面可以指定对象名称,后面通过赋值的方式给前面的对象相应的值,后面是无序的
'{n1} {n2} {n3}'.format(n1=a, n2=b, n3=c) # 也可以赋值的形式
'{} {} {}'.format(n1=a, n2=b, n3=c) # 报错
2、格式化输出
'%s' % 'zhangge'
#'zhangge'
'%15s' % 'zhangge' # 输出时按15个占位符
#' zhangge'
'%-8s' % 'aa' # 输出时字符串左对齐
#'aa '
'%s' % 1 # 整数
#'1'
'%s' % 1.1 # 俘点数
#'1.1'
'%s' % [1, 2, 3, 4] # 列表
#'[1, 2, 3, 4]'
'%d' % 2
#'2'
'%d' % 1.1
#'1'
'%f' %10.2 # 默认小数点后6位
# '10.200000'
'%.3f' % 10.2 # .3 保留小数点后3位
# '10.200'
'%10.3f' % 10.2 # 占10位输出,小数点后保留3位
'%-10.3f' % 10.2
# '10.200 '
'%c' % 65 # ASCII
#'A'
'%c' % 97
#'a'
'%o' % 7 # 逢8进1 八进制
#'7'
'%o' % 8
#'10'
'%o' % 24
#'30'
# 1-9,A, B ,C ,D, E, F 十六进制
'%x' % 9
#'9'
'%x' % 10
#'a'
'%x' % 11
#'b'
'%x' % 12
#'c'
'%x' % 13
#'d'
'%x' % 14
#'e'
'%x' % 15
#'f'
'%x' % 16
#'10'
'%x' % 17
#'11'
# %e 用科学计算法格式化
'%e ' % 10
#'1.000000e+01 ' 1*10 的1次方
'%e' % 100
#'1.000000e+02' 1*10 的2次方
+ 用在正数前面显示加号
'%+d' % 1
#'+1'
'%+d' % -1 # 负数自动识别返回负数
#'-1'
\n 换行 \t 制表位 \a 提示音 \b 退格
s = 'www\nwww'
print(s)
#www
#www
s = 'www\twww'
print(s)
#www www
r ' ' 取消转义
s = r'www\nwww'
print(s)
# www\nwww
深复制和浅复制
深复制和浅复制,只会在出现在嵌套列表的时候
浅复制
li = ['a','b']
l2 = ['c',li]
#输出结果:
#['c', ['a', 'b']]
l3 = l2.copy()
#输出结果:
#['c', ['a', 'b']]
id(l2),id(l3) # 新生产一个列表
#输出结果:
#(49062728,49063432)
id(l3[1]),id(l2[1]) # 嵌套的列表 li 的 id 相同,没有生成新的对象
#输出结果:
#(48962696, 48962696)
浅复制,就是 l2.copy() ,嵌套的列表不会新建一个对象,都引用一个对象li
li= l2[li] = l3[li]
深复制
import copy # 导入模块
l4 = copy.deepcopy(l2) # 将 l2 复制给 l4
id(l2[1]),id(l4[1]) # 求 l2 索引为1,l4索引为1 的 id 值
#(48962696, 48877064) id 不一样
扩展
'%s'%'asd'
'%r'%'asd' #如果是字符串,就多加一个引号 “ 'asd' ”
# “ 'asd' ”