Python-内置函数
一、compile()
将字符串编译成Python代码。
编译的模式,single,eval,exec
s = "print(123)" r = compile(s,"<string>","exec") #把字符串s 编译成python代码,然后让exec()执行。 exec(r)
二、exec()
执行python代码,没有返回值,即没有结果。也就是返回None
可以接收代码或者是字符串都可以执行。即如果接收到的是python代码,那么就会直接执行。如果接收到的是字符串,那么exec()会把字符串编译成python代码,然后再执行该代码。
'''例1:接收字符串,先把字符串转换为python代码,然后再执行该代码''' s = "print(123)" exec(s)
输出结果:执行了print(123)
123
'''例2:接收到的是代码,直接执行该代码'''
'''首先是compile()把s字符串转换为代码,然后让exec()来执行'''
s = "print(123)"
r = compile(s,"<string>","exec")
exec(r)
输出结果:
123
'''例3:没有返回值,即没有结果。只能返回None'''
s = "print(123)"
r = compile(s,"<string>","exec")
k = exec(r)
输出结果:
None
三、eval()
执行代码,有返回值,把字符串转换为表达式,进行计算,并返回结果
'''例1:将字符串s转换为代码,并执行s的表达式''' s = "8*8" ret = eval(s) print(ret)
输出结果:
64
注意:exec() 无返回结果
eval() 有返回值
四、dir()
快速查看对象提供了哪些功能
print(dir(list))
输出结果:
五、divmod(A,B)
博客分页需求:
假如有99个页面,每页显示10个页面,总共需要多少页
divmod()生成的是元组类型的数据。
'''例1:获取divmod()的值''' r = divmod(98,10) #生成的是元组类型 print(r,type(r)) print(r[0]) print(r[1])
输出结果:
(9, 8) <class 'tuple'>
9
8
'''例2:获取n1,n2的值''' n1,n2 = divmod(98,10) print(n1) print(n2)
输出结果:
9
8
六、filter()
对于序列中的元素进行筛选,最终获取符合条件的序列!
使用方法:
filter(函数,可迭代的对象)
filter,循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。
需求:获取一个列表中大于22的元素。
'''例1:获取列表大于22的元素,平时做法''' def f1(args): result_list = [] for item in args: if item > 22: result_list.append(item) return result_list list1 = [11,22,33,44,55] r = f1(list1) print(r)
输出结果:
[33, 44, 55]
'''例2:使用filter函数实现'''
def f2(a):
if a > 22:
return True
li = [11,22,33,44,55]
ret = filter(f2,li)
print(list(ret))
输出结果:
[33, 44, 55]
'''例3:使用filter函数与lambda'''
list1 = [11,22,33,44,55]
ret = filter(lambda a:a>22,list1)
print(list(ret))
输出结果:
[33, 44, 55]
通过上面的3个例子,发现例3 最简单。
七,map()
遍历序列,对序列中每个元素进行操作,最终获取新的序列。
map # 将函数返回元素添加到结果中
map(函数,可迭代的对象(可以for循环的东西))
解释:在python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号--即元素的位置,也称为索引。第一个索引是0,第二个则是1,以此类推。序列中的最后一个元素标记为-1,倒数第二个元素为-2,以此类推。
Python包含6种内建的序列,包括列表、元组、字符串、Unicode 字符串,buffer对象和xrange对象。
练习:
需求:列表中的每个元素都增加100
'''例1:for循环实现''' list1 = [11,22,33,44,55] def f1(arg): result_list = [] for item in arg: result_list.append(item +100) return result_list t = f1(list1) print(t) 输出结果:
[111, 122, 133, 144, 155] '''例2:使用map函数实现''' list1 = [11,22,33,44,55] def f2(a): return a + 100 result = map(f2,list1) print(list(result))
输出结果:
[111, 122, 133, 144, 155]
'''例3:map函数与lambda'''
list1 = [11,22,33,44,55]
result = map(lambda a: a+100,list1)
print(list(result))
输出结果:
[111, 122, 133, 144, 155]
filter() 与 map()的区别:
看下面的例子:
map()函数:
li = [11,22,33,44,55] result = map(lambda a: a + 200,li) print(list(result))
结果:
[211, 222, 233, 244, 255]
filter()函数:
li = [11,22,33,44,55] r = filter(lambda a: a + 200,li) print(list(r))
结果:
[11, 22, 33, 44, 55]
从上面的两个例子看得出,filter函数不会去计算,只会对序列中的元素进行筛选,最终获取符合条件的序列!例如 大于,小于,等于条件。
map()函数会计算列表中的元素,最终返回计算后的结果。
八、len()函数:
计算字符串,列表,元组的长度
'''例1:计算字符串长度''' s = "abcd" k = len(s) print(k)
输出结果 : 4 '''例2:计算汉字长度''' s = "北京" k = len(s) print(k)
输出结果:2 '''例3:按照字节计算汉字长度''' s = "北京" b = bytes(s,encoding='utf-8',) print(len(b))
输出结果:6
在utf-8编码中一个汉字占用3个字节 '''例4:计算列表长度''' list1 = [11,22,33,44,55] print(len(list1))
输出结果: 5 '''例5:计算字典长度''' dict1 = {"key1":"value1","key2":"value2","key3":"value3"} print(len(dict1))
输出结果:3
九、isinstance()
判断一个对象是否为某个类的实例
'''例1:判断字符串对象是否为str的实例,是返回True,否则返回False''' s = "beijing" r = isinstance(s,str) print(r)
输出结果:Ttrue '''例2:判断是字符串对象是否为list类的实例,是返回True,否则返回False''' s = "beijing" r = isinstance(s,list) print(r)
输出结果:False
十、zip()
合并列表,把列表的相同位置的元素一一对应,生成为元组类型,作为新的list的一个元素。
例如:
list1 = ["beijing",11,22,33] list2 = ["is",11,22,33] list3 = ["China",11,22,33] r = zip(list1,list2,list3) print(list(r))
输出结果:
[('beijing', 'is', 'China'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]
'''例1:把下面的3个列表中的beijing is China输出''' list1 = ["beijing",11,22,33] list2 = ["is",11,22,33] list3 = ["China",11,22,33] r = zip(list1,list2,list3) #print(list(r)) li = list(r) temp = li[0] print(temp) k = " ".join(temp) print(k)
输出结果:
('beijing', 'is', 'China')
beijing is China