1.深浅复制
首先明白:列表嵌套,即列表中可存在子列表 如:li=[1, 2, [3, 4]]
1)浅复制
通过copy() 函数赋值,改变原列表内层列表会影响赋值的列表,但一层元素的改变不会影响新赋值的列表。
如:li=[1, 2, [3, 4]]
lise=li.copy()
li[2][0]=666
li[0]=0
li #[0, 2, [666, 4]]
lise #[1, 2, [666, 4]]
2)深复制
引入copy模块进行的复制,赋值后新列表完全独立于原列表,不受原列表影响
格式: import copy
新列表名 = copy.deepcopy(要复制的列表名)
例:
import copy
li=[1, 2, [3, 4]]
lise=copy.deepcopy(li)
li[2][0]=666
li #[0, 2, [666, 4]]
lise #[1, 2, [3, 4]]
2.字符串拼接
1) +拼接
str='hello'
str2=' python'
str + str2 #'hello python'
2)%s 格式化拼接 (%s即为字符串符号化表示,见3)
'%s, %s'%('hello', 'python') #'hello,python' 解释:%s相当于占位符。本应输出''里的内容,让%s占用, 后用括号内的内容填充
3)join函数拼接
'分隔符'.join(str) 以分隔符(可以无分隔符)分割str后输出(str 可代表字符串,列表,元组)
如:li=['你好','余生','请多指教']
','.join(li) #'你好,余生,请多指教'
4)'{}'.format 格式化拼接
'{},{},{}'.format(obj1,obj2,obj3) #{}中不指定字符默认从左往右 输出为'obj1,obj2,obj3'
'{0}{1}{2}'.format(obj1,obj2,obj3) #指定字符按照顺序 输出为'obj1,obj2,obj3'
'{1}{0}{2}'.format(obj1,obj2,obj3) #按下标顺序输出 输出为'obj2,obj1,obj3'
'第一项为{a} ,第二项为{b}, 第三项为{c}'.format(a=obj1,b=obj2,c=obj3) #也可用字母定义下标,输出 略
注:若想在连接中插入自定义字符串,应当写到%s或{}所在引号内。
如'小生%s, 年方%s'%('北秋',18) #'小生北秋,年方18'
或如4) 第4种情况所示
3.字符串格式化
1) 了解 2)format 了解
%d 整形 '{:.2f}'.format(12.4444) 保留两位小数(四舍五入)
%s 字符串型 '{a:.2f}'.format(a=12.4444) 保留两位小数(四舍五入)
%f 浮点型 '{:.2%}'.format(0.66666) 百分比格式 66.67%
%c ASCII字符 '{:x}'.format(20) 转换成16进制
%o 8进展字符 '{a:<5}'.format(a=12.3) 左对齐,长度为5 输出'12.3 '
%x 16进制字符 '{a:x<6}'.format(a=12.3) 数字补x 输出'12.3xx '
%e 科学记数法(8e2 8×10^2) '{a:0>6}'.format(a=12.3) 右对齐,数字补0 输出'0012.3'
%r 自动判断格式化输出(输入为str,输 'a:0^5'.format(a=1) 两端对齐 输出'00100'
出即str;输入为int,输出即为int)
输出格式控制
'%5s'%'ab' #控制输出位数5位,输出' ab'
'%6.3f'%10.3 #输出共6位(含小数点),3位小数
输出为'10.300'
'%-6s'%'abc' #输出左对齐,输出为'abc '
4.拓展操作
f = 'hello {}'.format
f('python') #输出'hello python' 此时f 相当于一个函数
合起来便是'hello {}'.format('python')