对象的方法
什么是对象的方法
前面我们已经学习过了好几种类型的对象了,比如:整数类型对象、字符串类型对象、列表类型对象、元组类型的对象等等。
对象通常都拥有属于自己的 方法(英文叫 method )。
前面我们学过函数, 对象的方法其实可以看成是对象所拥有的函数。
也就是说 这个方法,是 属于 这个对象的函数。
调用对象的方法,和调用函数差不多,只要在前面加上 所属对象 和 一个点
比如:
这里, reverse就是列表对象的一个方法,该方法将列表元素倒过来。
var1.reverse()
语句就会将列表变量var1 里面的元素倒过来存放。
运行结果就是 var1就变成了 [7, 6, 5, 4, 3, 2, 1]
对象的方法是和这个对象 类型 紧密相关的。
对象是什么类型,就决定了对象有哪些方法。
字符串有字符串的方法,列表有列表的方法,元组有元组的方法。
字符串的方法
字符串对象就有很多方法,用来执行和这个字符串相关的操作
count
count 方法可以返回字符串对象包含了多少个参数指定的字符串
find
find 方法 会在字符串中查找 参数 子字符串,并返回该 参数字符串 在其中 第一个
出现的位置索引
如果字符串对象里面 没有
要查找的参数字符串,就会返回 -1
find 方法 的第二个参数,用来指定查找字符串范围,比如
split、splitlines
split 是我们常用的方法,经常用来从字符串中 截取 出我们想要的信息。
split 方法以参数字符串为分割符 ,将字符串 切割为多个 字符串,作为元素存入一个列表,并返回这个列表。
看看下面的例子
这里 split方法指定用 |
作为源字符串str1的分割符, 这样 原来的字符串 就被分成了 3个部分
最后将这个三个字符串存入一个列表中返回,返回的结果就是
大家要注意,分隔符本身在切割后,会被丢弃掉,所以切割后的字符串中不会有分隔符。
可能有的读者会注意到上面的3个字符串不对齐,
这不是我们的笔误。
原来的字符串,被切开后,分隔符前面有的空格字符,会保留下来。
小张
前面没有空格,所以切割后,切割出来的结果就没有空格。
而 小李
和 小赵
前面是有空格的,切割出来的结果就有空格
不一定非要用 竖线分割, 我们可以指定任何其他的分隔符来分割字符串,比如
这样就是以 小赵 这个字符串为界 ,分割。返回结果如下
字符串对象还有一个 splitlines
方法也比较常用,就是把字符串 按换行符
进行切割,比如
结果输出为
这样每行内容作为列表的一个元素。
splitlines 方法经常用在文件处理中,读出文件内容存入字符串,然后调用字符串的 splitlines方法,把每行内容依次存入列表。
随后循环遍历列表,就可以逐行分析文件内容了。
可能有人注意到,上例中,为何最后一个换行符没有导致返回的列表最后是一个空字符串呢?
这个函数的行为就是这样设计的(目前我也清楚为何这样设计)
如果要最后也能切出 空字符,使用 salary.split('\n')
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
join
join 方法和 split方法正好相反
split 是将字符串, 以 某字符串 为界, 切割 成多个字符串, 存入列表
join 是将列表中的字符串元素 以某字符串为连接符, 连接 为一个字符串
比如
返回的就是字符串 小张:79 | 小李:88 | 小赵:83
。
相当于把参数列表里面的字符串连接在一起, 中间加上指定的连接符 |
再比如
相当于把参数列表里面的字符串连接在一起, 中间加上指定的连接符 小赵
strip 、 lstrip 、 rstrip
strip方法可以将 字符串前面和后面的空格删除,但是不会删除字符串中间的空格
比如
lstrip方法 将 字符串前面 (左边) 的空格删除,但是不会删除字符串中间和右边的空格
比如
rstrip方法 将 字符串后面 (右边) 的空格删除,但是不会删除字符串中间和左边的空格
比如
replace
replace 也是常用的方法,用来 替换 字符串里面 所有指定的 子字符串 为另一个 字符串
比如
上面的replace方法就会把字符串中所有的我们,替换成他们
结果就是 '他们今天不去上学,他们踢足球'
startswith 和 endswith
startswith 方法检查字符串是否以参数指定的字符串 开头,如果是,返回True,否则返回False
endswith 方法检查字符串是否以指定的字符串 结尾,如果是,返回True,否则返回False
isdigit
isdigit 方法检查字符串是否全部由数字构成,如果是,返回True,否则返回False
比如,可以通过 isdigit 判断用户输入的电话号码是否全部是数字字符
字符串的倒序
要得到一个字符串的 倒序字符串,只需要使用切片操作 [::-1]
::
表示切片字符串的从头到尾,也就是全部内容, 而 步长 为 -1 表示,颠倒过来取元素
如下,
列表的方法
append
前面说过列表是一种 内容可改变的 对象。
append方法就会改变列表的内容,在后面添加一个元素。
比如
a = [1, 2, 3.14, 'hello']
# append 之后,a就变成了 [1, 2, 3.14, 'hello', '你好']
a.append('你好')
print(a)
# 继续append ,a就变成了 [1, 2, 3.14, 'hello', '你好', [7,8]]
a.append([7,8])
print(a)
注意,append 方法的返回值是 None,而不是新的列表对象。
如果你这样写
就会发现b的值为None
insert
如果我们 不是要在后面 添加一个元素, 而是在 指定位置插入一个元素,就可以使用insert方法
比如
a = [1, 2, 3.14, 'byhy.net']
# 插入到索引0的位置,也是插到第1个元素的位置上
# a列表内容就变成了 ['你好', 1, 2, 3.14, 'byhy.net']
a.insert(0, '你好')
print(a)
# 插入到索引2的位置,也是插到第3个元素的位置上
# a列表内容就变成了 ['你好', 1, '黑羽', 2, 3.14, 'byhy.net']
a.insert(2, '黑羽')
print(a)
同样的,insert方法的返回值也是 None
pop
如果我们要从列表 取出并删除 一个元素,就可以使用pop方法。
该方法的参数就是要取出的元素的索引
注意,取出后,该元素就从列表中删除了。所以pop也经常用来删除某个元素
比如
a = [1, 2, 3.14, 'byhy.net']
# 取出索引为3 的元素,也就是第4个元素
poped = a.pop(3)
# 取出后,a列表对象内容就变成了 [ 1, 2, 3.14]
print(a)
# 而取出的元素赋值给变量poped, poped的内容就是 'byhy.net'
print(poped)
pop 方法的返回值 是 提取出来的元素
remove
remove方法也是删除列表元素。
pop方法的参数是要删除元素的 索引,
而 remove方法的参数就是要删除元素的 值。
remove从第1个元素开始,寻找 和参数对象 相等的元素,如果找到了,就删除。
找到后,不会继续往后寻找其它相等的元素。
也就是说remove 最多只会删除1个元素。
比如
运行结果 var1就变成了 ['b', 'c', 'a']。
可以发现,只删除了第一元素'a', 最后的 'a' 并么有删除。
同样的,remove 方法的返回值也是 None
reverse
reverse方法将列表元素倒过来
运行结果 var1就变成了 [7, 6, 5, 4, 3, 2, 1]
同样的, reverse 方法的返回值也是 None
index
index 方法返回 参数对象 在列表 中的位置,也就是索引
运行后,发现idx的值为4 , 也就是说 5这个元素在列表 var1 中 索引为4
sort
可以使用 sort 方法对列表进行排序。
调用sort 方法,的列表中的元素通常都是是 数字 或者 字符串。如下
students = ['Alex','Tom','Jerry','Michale','Alex']
students.sort()
print(f'after sort: {students}')
numbers = [7,3,8,2,9]
numbers.sort()
print(f'after sort: {numbers}')
输出如下
注意: 调用过 sort 方法后,列表中的内容就改变了。
sort方法的返回值是None,所以不要写这样的代码
这样 numbers2 的值是None, 而不是排序后的列表