python3中常用的字符串方法(method)
方法的调用方法:
对象.方法名(方法传参)
说明:
方法的调用同函数调用一样属于表达式。
示例:
‘abc’.isalpha() True (判断abc是否全为英文字母)
123.isalpha() Flase (123没有isalpha方法)
注:字符串存储的是UNICODE编码值,UNICODE的前128和ASCII重叠
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
字符串格式化表达式:
作用:
生成一定格式的字符串
运算符:%
格式:
格式化字符串 % 参数值
或
格式化字符串 % (参数值1,参数值2....)
示例:
fmt = ‘姓名:%s,年龄:%d’
fmt %(‘张飞’,20)
print(fmt%(‘张飞’,20))
姓名:张飞,年龄:20
占位符类型码:
%s 字符串占位符
%d 十进制占位符
%c 将整数转换为单个字符,即将数字看做ascii编码
%r 字符串,使用repr而不是str
%o 八进制
%x 十六进制小写(a,b,c,d,e,f)
%X 十六进制大写(数字字符)
%e 指数型浮点数(e小写),如2.9e+10
%e 指数型浮点数(E大写),如2.9E+10
%f %F浮点十进制
%g %G十进制浮点数或指数浮点数自动转换
%% 等同于一个%
占位符%和类型码之间的格式语法:
%[格式语法] 类型码(d,s,f等)
格式语法:
- 左对齐
+ 显示正负号
0 补0
宽度
宽度.精度
示例:(数字代表总长度)
'%10d' % 123 #' 123'
'%-10d' % 123 #'123 '
'%10s' % 'abc' #' abc'
'%-5d' % '123' #'123 '
'%+10d' % 123 #' +123'
'%010d' % 123 #'0000000123'
'%10.3d' % 123.345678 #' 123.345'
a = input('请输入第一行文字')
b = input('请输入第二行文字')
c = input('请输入第三行文字')
m = max(len(a),len(b),len(c))
print('%*s' % (m,a))
print('%*s' % (m,b))
print('%*s' % (m,c))
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
循环语句(有两种)
while语句/for语句
while语句:根据一定条件,重复执行一条语句或多条语句
语法:while 真值表达式:
执行语句1
else:
执行语句2
说明:1.先执行真值表达式,测试布尔值为True或Flase
2.如果真值表达式为True(即满足条件),则执行语句1,然后返回while句重测
3.如果真值表达式测试值为Flase,则执行else(此时已经出了while的范围,执行完毕即结束,
while不再有限制)
break语句:
作用:用于终止循环语句,只能跳出一层,常与if结合使用。break语句只能在循环语句中使用,
即如果没有循环,正常代码将会出现错误。
for语句:(循环语句)
作用:用来遍历可迭代对象的数据元素
语法:for 变量/变量列表 in 可迭代对象:
语句块1
else:
语句块2
说明:可迭代对象每次提供一个元素【依次】赋值给变量列表中的变量,赋值完毕执行语句块1,重复。
else可省略
(可迭代对象:能依次获取数据源素的对象。)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
range函数:(整数序列生成器)
作用:用来创建一个生成一系列整数的可迭代对象。
用法:range(stop)
从零开始,每次生成一个整数后加一操作,直到stop-1(不包括stop)
range(start,stop)
从start开始,到stop-1结束(不包括stop)
range(start,stop,d)
从start开始,到stop-1结束(不包括stop),step为步数,可为正也可为负。
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
continue语句:
作用:用于循环语句中,不在执行本次循环内continue之后的语句,重新开始新的一次循环(与break类似,常与if结合)
说明:1.在while语句中执行continue,将直接跳转到while初始处
2.在for语句中执行continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次循环。
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
列表:list
1.列表内的元素有先后顺序
2.列表是一种序列
3.列表是可以被改变的序列
python3中的序列类型(可迭代对象,iterable):
字符串 str
列表 list
元组 tuple
字节串 bytes
字节数组 bytearray
列表的运算符号:+ ,+= ,* ,*=:
+ 用于拼接列表
x = [1,2,3] y = [4,5,6]
x + y = [1,2,3,4,5,6]
+= 用原来的列表与右侧列表拼接,并用变量绑定新列表
示例:
>>> x = [1,2,3];x += [4,5,6]
>>> x = [1,2,3,4,5,6]
* 生成重复列表(数字必须是整型数)
>>> x = [1,2]*3 >>> x = [1,2,1,2,1,2]
>>> y = 3*[5,6] >>> y = [5,6,5,6,5,6]
*= 生成重复列表并给原变量赋值
列表的比较运算:(与字符串比较方法一致,总左至右依次比较。)
运算符:
< <= > >= == !=
示例:
[1,2,3]<[1,2,4] # True
[1,3]>[1,2,4] # True
[5]<[5,0] # True
['abc',1]>['ABC',2] # True
列表是序列:
list('hello') >>> ['h','e','l','l','o']
list(range(10)) >>> [0,1,2,3]
list([1,2,3,4]) >>> [1,2,3,4]
列表的 in/not in
判断一个对象是否存在于容器内,如果存在返回True,否则返回False,与字符串in用法相同。
列表的索引:
L[x] 取值时等同于字符串的索引操作,正向反向规则与字符串完全相同。
列表的索引赋值:即L[x]=xx 即将L[x]值改变为了xx。
列表的切片:
语法:
列表[:]
列表[::]
切片取值时,返回一个列表,规则等同于字符串切片规则。(括号带不带效果相同)
L = [1,2,3]
L[0:2]=9,0
>>>L = [9,0,3]
L = [1,2,3]
L[0:2]=[9,0]
>>>L = [9,0,3]
注意:L =[1,2,3]
L[0]=[3,4,5]
L = [[3,4,5],2,3]
L = [1,2,3]
L[0:1]=[3,4,5]
L = [3,4,5,2,3]
切片赋值注意事项:
对于步长不等于1的切片赋值,赋值运算符右侧的可迭代对象提供的元素个数一定要等于切片切除的段数。
即切出多段时,要给出相同数量的可迭代对象进行填充。
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
del语句:用于删除列表中的元素
语法:
del l[index]
del l[index1:index2]
示例:
L=[1,2,3,4,5,6]
del L[-1] 删除最后一个元素,删除6
del L[0] 删除第一个0
del L[::2] 删除2,4
python3中常用于序列的函数:
len(seq) 返回序列中元素个数
max(x) 返回序列的最大值元素
min(x) 返回序列最小值元素
sum(x) 返回所有元素的和
以上三个序列的元素必须是数值类型
any(x) 真值测试,相当于or
all(x) 真值测试,相当于and
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
深拷贝 deep copy 和 浅拷贝 shallow copy
浅拷贝:是指复制过程中,只复制原始变量,不会复制深层变量绑定的对象,的复制过程
示例:enter:L=[3.1,3.2]
enter:L1=[1,2,L]
enter:L2=L1.copy()
enter:L[0]=3.14
print:L1 = [1,2,[3.14,3.2]]
print:L2 = [1,2,[3.14,3.2]]
注释:此时的复制只复制了外层绑定关系,而L的绑定关系没有复制,因此'L1中和L2中的L是同一个',
因此改动时候会同时变化。
优点:效率高,占用内存少
深拷贝:(此时需要加入copy模块)
示例:import copy 导入copy模块
enter:L=[3.1,3.2]
enter:L1=[1,2,L]
enter:L2=L1.deepcopy()
enter:L[0]=3.14
print:L1 = [1,2,[3.14,3.2]]
print:L2 = [1,2,[3.1,3.2]] 不变,此时L2中的[3.1,3.2]没有绑定任何变量,只有L2[2]能代表。
注意事项:
深拷贝通常只对可变对象进行深层复制,不可变对象通常不被复制(例如L是可变的,而1,2这种字符串不会复)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
列表与字符串比较:
1.列表和字符串都是序列,元素之间有先后关系
2.字符串是不可变的序列,而列表是可变序列
3.字符串中每个元素只能储存字符,而列表可以储存任意类型元素
4.列表和字符串都是可迭代对象。
※字符串文本解析方法 split和join
S.split('sep')【sep为字符串中的某个字符】
将字符串使用sep作为分隔符分割S字符串,返回分割后的字符串列表,当不给定参数时,
用空格作为分隔符分割。
'xx'.join(S)
用可迭代对象中的字符串,返回一个中间用xx进行分隔的字符串。
示例:
s = 'Beijing is captial'
L = s.split(' ') >>> L=['Beijing','is','captial']
L = ['C:','Programe files','Python3']
'\\'.join(L)
>>>s = 'C:\\Programe filea\\Python3'
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
列表推导式:
列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式
作用:
用一定的方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
s = [x**2 for x in range(1,7)]
>>>s = [1,4,9,16,25,36]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
s = [x**2 for x in range(1,7) if x != 5]
>>>s = [1,4,9,16,36]
列表推导式的嵌套:
语法:
[表达式1
for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2]
示例:
[x + y for x in 'ABC' for y in '123']