Python机器学习
上QQ阅读APP看书,第一时间看更新

4.4 常用函数

Python语言内置了很多常用的函数,比如字符串处理函数(包括子字符串查找、位置索引查找、字符大小写转换和字符替换等函数),以及一些内置的高级函数(包括map、filter和zip等函数)。内置函数不用定义而在程序中直接使用,大大提高了编程效率。

4.4.1 字符串处理函数

Python语言内置了字符串处理函数,包括查找函数find()、位置索引函数index()、统计函数count()、转换大小写函数upper()和lower()、去除字符串首尾两端指定字符函数strip()、替换函数replace()、分割函数split()、合并函数join(),以及判断字符串是否以某子字符串开头或结尾的函数startwith()和endwith()。下面分别介绍各种函数的用法。

1.查找函数find()

find()函数用来查找第一个匹配到的子字符串的起始位置。具体语法格式为:

其中各参数详细说明如下。

● sub:要查找位置的子字符串。

● start:开始查找的位置,如果不设置则默认从第一个字符开始查找。

● end:结束查找的位置,如果不设置则默认可以查找到最后。

● 如果找到则返回位置,找不到则返回-1。

【例4-12】编写程序,使用find()方法查找子字符串的位置索引。

参考程序如下:

程序运行结果如下:

2.查找子字符串位置函数index()

函数index()用来查找子字符串在原字符串中的位置,如果找到则返回起始位置,找不到则抛出异常。具体语法格式为:

其中各参数详细说明如下。

● sub:要查找位置的子字符串。

● start:开始查找的位置,如果不设置则默认从第一个字符开始查找。

● end:结束查找的位置,如果不设置则默认可以查找到最后。

● 如果找到则返回起始位置,找不到则抛出异常。

【例4-13】编写程序,函数index()用来查找子字符串在原字符串中的位置。

参考程序如下:

程序运行结果如下:

从例子中可以看出,在str中找到子字符串tyu,返回起始位置为4,而子字符串lkjhs在str中找不到,故抛出异常ValueError: substring not found。

3.统计函数count()

count()函数用来统计某个字符串在原字符串中出现的次数。具体语法格式为:

其中各参数详细说明如下。

● x:要统计出现次数的子字符串。

● start:开始查找的位置,如果不设置则默认从第一个字符开始查找。

● end:结束查找的位置,如果不设置则默认可以查找到最后。

【例4-14】编写程序,使用count()函数统计str中从索引位置18开始到22截止(不包括22)中字符b的个数。

参考程序如下:

程序运行结果如下:

4.转换大小写函数upper()和lower()

upper()把字符串全部转化为大写,并把转化之后的字符串返回,lower()把字符串全部转化为小写,并把转化之后的字符串返回。

【例4-15】编写程序,使用upper()函数和lower()函数实现字符串大小写转换。

参考程序如下:

程序运行结果如下:

5.strip()函数

strip([chars])用来去除字符串首尾两端的指定字符,当不指定chars时,默认去除字符串首尾两端的空格。

【例4-16】编写程序,使用strip()函数删除字符串首尾两端的'∗'。

参考程序如下:

程序运行结果如下:

6.替换函数replace()

replace()函数可以将字符串中的字符进行替换,具体语法格式为:

其中各参数详细说明如下。

● old:要替换的字符串。

● new:替换之后的字符串。

● count:替换的次数。如不设置将用new替换所有的old。

函数具体用法如下。

【例4-17】编写程序,使用replace()函数用字符串'=='替换原字符串中的'∗'。

参考程序如下:

程序运行结果如下:

7.分割函数split()

split()函数通过指定分隔符对字符串进行切片,具体语法格式为:

其中各参数详细说明如下。

● str:分隔符。不设置时默认为所有的空字符,包括空格、换行(\n)和制表符(\t)等。

● num:分割次数。不设置时默认为-1,即分隔所有。如果设置num指定值,则分割为num+1个子字符串。

【例4-18】编写程序,使用split()函数,利用指定字符对字符串进行分割。

参考程序如下:

程序运行结果如下:

8.合并函数join()

join()方法用于将序列中的元素以指定的字符串连接生成一个新的字符串。具体语法格式为:

其中,参数sequence为要连接的元素序列。返回值为通过指定字符连接序列中元素后生成的新字符串。

【例4-19】编写程序,使用join()函数连接字符串。

参考程序如下:

程序运行结果如下:

9.startwith()与endwith()

startswith()函数用来判断某个字符串是否以某个字符串开头,如果以某个字符串开头,返回True,否则返回False。endswith()函数用来判断某个字符串是否以某个字符串结束,如果以某个字符串结尾,返回True,否则返回False。

【例4-20】编写程序,使用startswith()函数和endswith()函数判断字符串是否以指定字符开始和以指定字符结束。

参考程序如下:

程序运行结果如下:

4.4.2 高级函数

1.map函数

map函数是Python内置的高级函数,它的基本样式为map(func,list)。其中,func是一个函数,list是一个序列对象。在执行时,序列对象中的每个元素,按照从左到右的顺序通过把函数func依次作用在list的每个元素上,得到一个新的list并返回。

【例4-21】编写程序,使用map函数实现add方法作用在numbers上。

参考程序如下:

程序运行结果如下:

2.filter函数

filter函数是Python内置的另一个常用的高级函数。它的基本样式为filter(func,list)。filter函数接收一个函数func和一个列表list,函数func的作用是对每个元素进行判断,通过返回True或False来过滤不符合条件的元素,符合条件的元素组成新list。

【例4-22】编写程序,使用filter函数过滤不符合条件的元素。

参考程序如下:

程序运行结果如下:

3.zip函数

zip函数也是Python内置的另一个常用的高级函数。它的基本样式为zip([iterable,…]),其中iterable表示可迭代对象。zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回一个可迭代的zip对象。这个可迭代对象可以使用列表或循环的方式列出其元素,若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可迭代对象相同。

【例4-23】编写程序,展示zip函数的用法。

参考程序如下:

程序运行结果如下: