Python基础之常见内建函数map() 函数接受两个参数,一个是函数,一个是可迭代对象(Iterable), map 将传入的函数依次作用到可迭代对象的每一个元素 , 并把结果作为迭代器(Iterator)返回 。
举例说明,有一个函数 f(x)=x^2 , 要把这个函数作用到一个list [1,2,3,4,5,6,7,8,9] 上:
运用简单的循环可以实现:
运用高阶函数 map() :
结果 r 是一个迭代器 , 迭代器是惰性序列 , 通过 list() 函数让它把整个序列都计算出来并返回一个 list。
如果要把这个list所有数字转为字符串利用 map() 就简单了:
小练习:利用 map() 函数,把用户输入的不规范的英文名字变为首字母大写其他小写的规范名字 。输入 ['adam', 'LISA', 'barT'] ,输出 ['Adam', 'Lisa', 'Bart']
reduce() 函数也是接受两个参数 , 一个是函数,一个是可迭代对象,reduce 将传入的函数作用到可迭代对象的每个元素的结果做累计计算 。然后将最终结果返回 。
效果就是: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
举例说明 , 将序列 [1,2,3,4,5] 变换成整数 12345 :
小练习:编写一个 prod() 函数,可以接受一个 list 并利用 reduce 求积:
map() 和 reduce() 综合练习:编写 str2float 函数,把字符串 '123.456' 转换成浮点型 123.456
filter() 函数用于过滤序列, filter() 也接受一个函数和一个序列,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素 。
举例说明 , 删除list中的偶数:
小练习:用 filter() 求素数
定义一个筛选函数:
定义一个生成器不断返回下一个素数:
打印100以内素数:
python内置的 sorted() 函数可以对list进行排序:
sorted() 函数也是一个高阶函数,还可以接受一个 key 函数来实现自定义排序:
key 指定的函数将作用于list的每一个元素上,并根据 key 函数返回的结果进行排序.
默认情况下,对字符串排序,是按照ASCII的大小比较的 , 由于'Z''a',结果 , 大写字母Z会排在小写字母a的前面 。如果想忽略大小写可都转换成小写来比较:
要进行反向排序,不必改动key函数 , 可以传入第三个参数 reverse=True :
小练习:假设我们用一组tuple表示学生名字和成绩: L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]。用sorted()对上述列表分别按c成绩从高到低排序:
运用匿名函数更简洁:
Python的函数都有哪些【常见的内置函数】
1、enumerate(iterable,start=0)
是python的内置函数,是枚举、列举的意思,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 。
2、zip(*iterables,strict=False)
用于将可迭代的对象作为参数 , 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表 。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符 , 可以将元组解压为列表 。
3、filter(function,iterable)
filter是将一个序列进行过滤,返回迭代器的对象,去除不满足条件的序列 。
4、isinstance(object,classinfo)
是用来判断某一个变量或者是对象是不是属于某种类型的一个函数,如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例,
返回True 。如果object不是一个给定类型的的对象,则返回结果总是False
5、eval(expression[,globals[,locals]])
用来将字符串str当成有效的表达式来求值并返回计算结果,表达式解析参数expression并作为Python表达式进行求值(从技术上说是一个条件列表),采用globals和locals字典作为全局和局部命名空间 。
【常用的句式】
1、format字符串格式化
format把字符串当成一个模板 , 通过传入的参数进行格式化 , 非常实用且强大 。
2、连接字符串
常使用 连接两个字符串 。
3、if...else条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块 。其中if...else语句用来执行需要判断的情形 。
4、for...in、while循环语句
循环语句就是遍历一个序列,循环去执行某个操作,Python中的循环语句有for和while 。
5、import导入其他脚本的功能
有时需要使用另一个python文件中的脚本,这其实很简单,就像使用import关键字导入任何模块一样 。
Python常用的正则表达式处理函数详解 正则表达式是一个特殊的字符序列python常用函数举例 , 用于简洁表达一组字符串特征python常用函数举例,检查一个字符串是否与某种模式匹配,使用起来十分方便 。
在Python中,我们通过调用re库来使用re模块:
import re
下面介绍Python常用的正则表达式处理函数 。
re.match函数
re.match 函数从字符串的起始位置匹配正则表达式,返回match对象,如果不是起始位置匹配成功的话 , match()就返回None 。
re.match(pattern, string, flags=0)
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
flags:标志位 , 用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 。具体参数为:
re.I:忽略大小写 。
re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 。
re.M:多行模式 。
re.S:即 . ,并且包括换行符在内的任意字符(. 不包括换行符) 。
re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库 。
re.X:为了增加可读性,忽略空格和 # 后面的注释 。
import re#从起始位置匹配r1=re.match('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.match('def','abcdefghi')print(r2)
运行结果:
其中 , span表示匹配成功的整个子串的索引 。
使用group(num) 或 groups() 匹配对象函数来获取匹配表达式 。
group(num):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组 。
groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号 。
import res='This is a demo'r1=re.match(r'(.*) is (.*)',s)r2=re.match(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())
运行结果:
上述代码中的(.*)和(.*?)表示正则表达式的贪婪匹配与非贪婪匹配 。
re.search函数
re.search函数扫描整个字符串并返回第一个成功的匹配 , 如果匹配成功则返回match对象,否则返回None 。
re.search(pattern, string, flags=0)
pattern:匹配的正则表达式 。
【python常用函数举例 python3常用函数】 string:待匹配的字符串 。
flags:标志位,用于控制正则表达式的匹配方式 , 如:是否区分大小写,多行匹配等等 。
import re#从起始位置匹配r1=re.search('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.search('def','abcdefghi')print(r2)
运行结果:
使用group(num) 或 groups() 匹配对象函数来获取匹配表达式 。
group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组 。
groups():返回一个包含所有小组字符串的元组 , 从 1 到 所含的小组号 。
import res='This is a demo'r1=re.search(r'(.*) is (.*)',s)r2=re.search(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())
运行结果:
从上面不难发现re.match与re.search的区别:re.match只匹配字符串的起始位置,只要起始位置不符合正则表达式就匹配失败,而re.search是匹配整个字符串,直到找到一个匹配为止 。
re.compile 函数
compile 函数用于编译正则表达式 , 生成一个正则表达式对象,供 match() 和 search() 这两个函数使用 。
re.compile(pattern[, flags])
pattern:一个字符串形式的正则表达式 。
flags:可选,表示匹配模式 , 比如忽略大小写,多行模式等 。
import re#匹配数字r=re.compile(r'\d ')r1=r.match('This is a demo')r2=r.match('This is 111 and That is 222',0,27)r3=r.match('This is 111 and That is 222',8,27)print(r1)print(r2)print(r3)
运行结果:
findall函数
搜索字符串,以列表形式返回正则表达式匹配的所有子串,如果没有找到匹配的,则返回空列表 。
需要注意的是,match 和 search 是匹配一次,而findall 匹配所有 。
findall(string[, pos[, endpos]])
string:待匹配的字符串 。
pos:可选参数,指定字符串的起始位置,默认为0 。
endpos:可选参数,指定字符串的结束位置,默认为字符串的长度 。
import re#匹配数字r=re.compile(r'\d ')r1=r.findall('This is a demo')r2=r.findall('This is 111 and That is 222',0,11)r3=r.findall('This is 111 and That is 222',0,27)print(r1)print(r2)print(r3)
运行结果:
re.finditer函数
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回 。
re.finditer(pattern, string, flags=0)
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等 。
import rer=re.finditer(r'\d ','This is 111 and That is 222')for i in r:print (i.group())
运行结果:
re.split函数
将一个字符串按照正则表达式匹配的子串进行分割后,以列表形式返回 。
re.split(pattern, string[, maxsplit=0, flags=0])
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
maxsplit:分割次数,maxsplit=1分割一次,默认为0,不限次数 。
flags:标志位,用于控制正则表达式的匹配方式 , 如:是否区分大小写 , 多行匹配等 。
import rer1=re.split('\W ','This is 111 and That is 222')r2=re.split('\W ','This is 111 and That is 222',maxsplit=1)r3=re.split('\d ','This is 111 and That is 222')r4=re.split('\d ','This is 111 and That is 222',maxsplit=1)print(r1)print(r2)print(r3)print(r4)
运行结果:
re.sub函数
re.sub函数用于替换字符串中的匹配项 。
re.sub(pattern, repl, string, count=0, flags=0)
pattern:正则中的模式字符串 。
repl:替换的字符串,也可为一个函数 。
string:要被查找替换的原始字符串 。
count:模式匹配后替换的最大次数,默认0表示替换所有的匹配 。
import rer='This is 111 and That is 222'# 删除字符串中的数字r1=re.sub(r'\d ','',r)print(r1)# 删除非数字的字符串r2=re.sub(r'\D','',r)print(r2)
运行结果:
到此这篇关于Python常用的正则表达式处理函数详解的文章就介绍到这了,希望大家以后多多支持!
python3--内置函数python的常用内置函数
1.abs() 函数返回数字的绝对值
abs(-40)=40
2. dict() 函数用于创建一个字典
dict()
{}#创建一个空字典类似于u={},字典的存取方式一般为key-value
例如u = {"username":"tom","age":18}
3. help() 函数用于查看函数或模块用途的详细说明
help('math')查看math模块的用处
a=[1,2,3,4]
help(a)查看列表list帮助信息
4.dir()获得当前模块的属性列表
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
5.min() 方法返回给定参数的最小值 /参数可以为序列
a=min(10,20,30,40)
a
10
6. next() 返回迭代器的下一个项目
it = iter([1, 2, 3, 4, 5])
next(it)
1
next(it)
2
7. id() 函数用于获取对象的内存地址
a=12
id(a)
1550569552
8.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列python常用函数举例,同时列出数据和数据下标python常用函数举例,一般用在 for 循环当中 。
a=["tom","marry","leblan"]
list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
9. oct() 函数将一个整数转换成8进制字符串
oct(15)
'0o17'
oct(10)
'0o12'
10. bin() 返回一个整数 int 或者长整数 long int 的二进制表示
bin(10)
'0b1010'
bin(15)
'0b1111'
11.eval() 函数用来执行一个字符串表达式python常用函数举例,并返回表达式的值
eval('2 2')
4
12.int() 函数用于将一个字符串会数字转换为整型
int(3)
3
int(3.6)
3
int(3.9)
3
int(4.0)
4
13.open() 函数用于打开一个文件 , 创建一个file对象 , 相关的方法才可以调用它进行读写
f=open('test.txt')
14.str() 函数将对象转化为适于人阅读的形式
str(3)
'3'
15. bool() 函数用于将给定参数转换为布尔类型 , 如果没有参数,返回 False
bool()
False
bool(1)
True
bool(10)
True
bool(10.0)
True
16.isinstance() 函数来判断一个对象是否是一个已知的类型
a=5
isinstance(a,int)
True
isinstance(a,str)
False
17. sum() 方法对系列进行求和计算
sum([1,2,3],5)
11
sum([1,2,3])
6
18. super() 函数用于调用下一个父类(超类)并返回该父类实例的方法 。super 是用来解决多重继承问题的,直接用类名调用父类方法
classUser(object):
def__init__(self):
class Persons(User):
super(Persons,self).__init__()
19. float() 函数用于将整数和字符串转换成浮点数
float(1)
1.0
float(10)
10.0
20. iter() 函数用来生成迭代器
a=[1,2,3,4,5,6]
iter(a)
for i in iter(a):
...print(i)
...
1
2
3
4
5
6
21.tuple 函数将列表转换为元组
a=[1,2,3,4,5,6]
tuple(a)
(1, 2, 3, 4, 5, 6)
22.len() 方法返回对象(字符、列表、元组等)长度或项目个数
s = "playbasketball"
len(s)
14
a=[1,2,3,4,5,6]
len(a)
6
23. property() 函数的作用是在新式类中返回属性值
class User(object):
def __init__(self,name):
self.name = name
def get_name(self):
return self.get_name
@property
def name(self):
return self_name
24.type() 函数返回对象的类型
25.list() 方法用于将元组转换为列表
b=(1,2,3,4,5,6)
list(b)
[1, 2, 3, 4, 5, 6]
26.range() 函数可创建一个整数列表,一般用在 for 循环中
range(10)
range(0, 10)
range(10,20)
range(10, 20)
27. getattr() 函数用于返回一个对象属性值
class w(object):
...s=5
...
a = w()
getattr(a,'s')
5
28. complex() 函数用于创建一个复数或者转化一个字符串或数为复数 。如果第一个参数为字符串,则不需要指定第二个参数
complex(1,2)
(1 2j)
complex(1)
(1 0j)
complex("1")
(1 0j)
29.max() 方法返回给定参数的最大值 , 参数可以为序列
b=(1,2,3,4,5,6)
max(b)
6
30. round() 方法返回浮点数x的四舍五入值
round(10.56)
11
round(10.45)
10
round(10.45,1)
10.4
round(10.56,1)
10.6
round(10.565,2)
10.56
31. delattr 函数用于删除属性
class Num(object):
...a=1
...b=2
...c=3.
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
b= 2
print('c=',print1.c)
c= 3
delattr(Num,'b')
print('b=',print1.b)
Traceback (most recent call last):File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
32. hash() 用于获取取一个对象(字符串或者数值等)的哈希值
hash(2)
2
hash("tom")
-1675102375494872622
33. set() 函数创建一个无序不重复元素集 , 可进行关系测试 , 删除重复数据,还可以计算交集、差集、并集等 。
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}
一文秒懂python正则表达式常用函数01 Re概览
Re模块是python的内置模块python常用函数举例,提供python常用函数举例了正则表达式在python中的所有用法,默认安装位置在python根目录下的Lib文件夹(如 ..\Python\Python37\Lib) 。主要提供了3大类字符串操作方法python常用函数举例:
字符查找/匹配
字符替换
字符分割
由于是面向字符串类型的模块,就不得不提到字符串编码类型 。re模块中,模式串和搜索串既可以是 Unicode 字符串 (常用str类型),也可以是8位字节串 (bytes,2位16进制数字,例如\xe5) ,但要求二者必须是同类型字符串 。
02 字符串查找/匹配
预编译:compile
在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型,以便后续快速匹配和复用
import repattern = re.compile(r'[a-z]{2,5}')type(pattern) #re.Pattern
此例创建了一个正则表达式式对象 (re.pattern),命名为pattern,用于匹配2-5位小写字母的模式串 。后续在使用其python常用函数举例他正则表达式函数时,即可使用pattern进行方法调用 。
匹配:match
match函数用于从文本串的起始位置开始匹配 , 若匹配成功,则返回相应的匹配对象,此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None
import repattern = re.compile(r'[a-z]{2,5}')text1 = 'this is a re test'res = pattern.match(text1)print(res) #if res:print(res.group()) #thisprint(res.span()) #(0, 4)text2 = '是的, this is a re test'print(pattern.match(text2))#None
match函数还有一个变形函数fullmatch , 当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象,否则返回None
搜索:search
match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法,与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串
import repattern = re.compile(r'\s[a-z]{2}')text1 = 'this is a re test'res = pattern.search(text1)print(res) #if res:print(res.group()) #isprint(res.span()) #(4, 7)pattern2 = re.compile(r'\s[a-z]{5}')text2 = '是的,this is a re test'print(pattern2.search(text2))#None
match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配,而后者从任意位置匹配,匹配成功则返回一个match对象 。
全搜索:findall/finditer
几乎是最常用的正则表达式函数,用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.findall(text1)print(res) #[' is', ' re', ' test']
findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表 。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型,其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.finditer(text1)for r in res:print(r.group())"""isretest"""
当匹配模式串较为简单或者仅需单词调用时 , 上述所有方法也可直接调用re类函数 , 而无需事先编译 。此时各方法的第一个参数为模式串 。
import repattern = re.compile(r'\d{2,5}')text = 'this is re test're.findall('[a-z] ', text) #['this', 'is', 're', 'test']03 字符串替换/分割
替换:sub/subn
当需要对文本串进行条件替换时 , 可调用re.sub实现 (当然也可先编译后再用调用实例方法) ,相应参数分别为模式串、替换格式、文本串,还可以通过增加缺省参数限定替换次数和匹配模式 。通过在模式串进行分组,可实现字符串的格式化替换(类似字符串的format方法),以实现特定任务 。
import retext = 'today is 2020-03-05'print(re.sub('-', '', text)) #'today is 20200305'print(re.sub('-', '', text, 1)) #'today is 202003-05'print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'
re.sub的一个变形方法是re.subn,区别是返回一个2元素的元组,其中第一个元素为替换结果 , 第二个为替换次数
import retext = 'today is 2020-03-05'print(re.subn('-', '', text)) #('today is 20200305', 2)
分割:split
还可以调用正则表达式实现字符串的特定分割,相当于.split()方法的一个加强版 , 实现特定模式的分割,返回一个切割后的结果列表
import retext = 'today is a re test, what do you mind?'print(re.split(',', text)) #['today is a re test', ' what do you mind?']04 总结
python中的re模块提供了正则表达式的常用方法,每种方法都包括类方法调用(如re.match)或模式串的实例调用(pattern.match)2种形式
常用的匹配函数:match/fullmatch
常用的搜索函数:search/findall/finditer
常用的替换函数:sub/subn
常用的切割函数:split
还有其他很多方法 , 但不是很常用,具体可参考官方文档
另外 , python还有第三方正则表达式库regex可供选择
到此这篇关于一文秒懂python正则表达式常用函数的文章就介绍到这了,希望大家以后多多支持python常用函数举例!
关于python常用函数举例和python3常用函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 直播翡翠话术,直播翡翠话术文案
- 如何推广一个软件,怎么推广应用软件
- 路由器用什么软件查询密码,无线路由器密码查看软件
- linux中打印列的命令 linux 打印
- 医院营销体系如何建设好,医院营销管理体系与策划
- 六岁男孩的玩具益智游戏,六岁孩子玩的益智玩具
- 游戏黑暗大冒险下载,黑暗探险游戏
- java缩容源代码 java 压缩算法
- 换显卡后显示重影怎么办,更换显卡后卡在logo