字符串输出和深浅复制

百分号占位符要严格区分字母
# %s 字符串
# %d 只能输出整数
In [43]: '%d'%123.123
Out[43]: '123'
# %f 默认保留六位小数
In [44]: '%f'%2.3
Out[44]: '2.300000'
# %.2f,四舍五入
In [45]: '%.2f'%2.3
Out[45]: '2.30'

In [46]: '%.2f'%2.355555
Out[46]: '2.36'
# %c 把整数转换成 ASCII 的数字
In [47]: '%c'%97
Out[47]: 'a'
# %o 八进制,满八进一
In [48]: '%o'%8
Out[48]: '10'
# %x 十六进制
In [49]: '%x'%16
Out[49]: '10'
# %e 科学计数法
In [50]: '%e'%10.3
Out[50]: '1.030000e+01'

In [51]: '%.3e'%10.3
Out[51]: '1.030e+01'
# %r 看出原来是数字还是字符串
In [54]: print('%r'%'123')
'123'

In [55]: print('%s'%'123')
123
# %后面的第一个数字指定长度,必须是大于字符个数的数字才能生效,每个字符都占位置
In [56]: '%5.2f'%123.555555
Out[56]: '123.56'

In [57]: '%7.2f'%123.555555
Out[57]: ' 123.56'

In [58]: '%6.2f'%123.555555
Out[58]: '123.56'

 

 

 

#format
In [59]: a = 'hello'

In [60]: b = 'python'

In [61]: c = 'aaa'

In [62]: '{2}{0}{1}'.format(a,b,c)
Out[62]: 'aaahellopython'

In [63]: '{}{}{}'.format(b,c,a)
Out[63]: 'pythonaaahello'

# 保留两位小数
In [64]: '{:.2f}'.format(12.333333)
Out[64]: '12.33'

In [73]: '{a:.2f}{b}'.format(a=13.222222, b=13131)
Out[73]: '13.2213131'
格式化输出的样子很多种,灵活运用,不一定全部用到
# 百分比形式输出,数字控制几位小数
In [74]: '{:.2%}'.format(.033)
Out[74]: '3.30%'
# 左对齐
In [75]: '{:<10}'.format(12.3)
Out[75]: '12.3 '

In [76]: '{:0<10}'.format(12.3)
Out[76]: '12.3000000'
#右对齐
In [78]: '{:0>10}'.format(12.3)
Out[78]: '00000012.3'
# 中间对齐
In [77]: '{:0^10}'.format(12.3)
Out[77]: '00012.3000'

 

 

编码 encode
# utf8
In [79]: '潭州'.encode('utf8')
Out[79]: b'\xe6\xbd\xad\xe5\xb7\x9e'
# gbk
In [80]: '潭州'.encode('gbk')
Out[80]: b'\xcc\xb6\xd6\xdd'

解码 decode,以什么编码,就以什么解码
In [81]: a = '潭州'.encode('utf8')

In [82]: a.decode('utf8')
Out[82]: '潭州'

 

 

 

# copy浅复制
In [93]: li3 = li2.copy()

In [94]: id(li2)
Out[94]: 2607632445064

In [95]: id(li3)
Out[95]: 2607632388488

In [96]: li3
Out[96]: ['a', ['b', 2, 3]]

In [97]: li2[0] = 'c'

In [98]: li2
Out[98]: ['c', ['b', 2, 3]]

In [99]: li3
Out[99]: ['a', ['b', 2, 3]]

In [100]: li
Out[100]: ['b', 2, 3]

In [101]: li[0] = 'd'

In [102]: li2
Out[102]: ['c', ['d', 2, 3]]

In [103]: li3
Out[103]: ['a', ['d', 2, 3]]

In [104]: id(li2[1])
Out[104]: 2607629869640

In [105]: id(li3[1])
Out[105]: 2607629869640

# 深复制 deepcopy
In [106]: import copy

In [107]: li4 = copy.deepcopy(li2)

In [108]: li2
Out[108]: ['c', ['d', 2, 3]]

In [109]: li4
Out[109]: ['c', ['d', 2, 3]]

In [110]: li[0]=1

In [111]: li2
Out[111]: ['c', [1, 2, 3]]

In [112]: li4
Out[112]: ['c', ['d', 2, 3]]

In [113]: id(li)
Out[113]: 2607629869640

In [114]: id(li4[1])
Out[114]: 2607632705544

 

 

# 二进制序列类型
In [115]: bytes(3)
Out[115]: b'\x00\x00\x00'

In [116]: a = bytes(3)

In [117]: a
Out[117]: b'\x00\x00\x00'

In [118]: a[0]
Out[118]: 0

In [119]: a[1]
Out[119]: 0

In [120]: a[2]
Out[120]: 0
# 只接受二进制
In [121]: bytes(b'abc')
Out[121]: b'abc'

In [122]: bytes('abnn')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-122-47dbf95c0e05> in <module>
----> 1 bytes('abnn')

TypeError: string argument without an encoding

# bytearray类型
In [123]: bytearray(b'abc')
Out[123]: bytearray(b'abc')

上一篇:字节串和字节数组


下一篇:python控制投影仪的代码