03 内置函数

day 3内置函数
map
它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的object并返回。
格式:map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
注意,map不改变原list,而是返回一个新list。
例1::res = map(lambda x:x*2,[1,2,3,4,5])
print(res)
print(list(res))#把迭代器转换为列表
执行结果是:[2, 4, 6, 8, 10]
例2:res2 =map(lambda x,y:x+y,[1,2,3,4,5],[11,22,33,44,55])
print(list(res2))
执行结果是:[12, 24, 36, 48, 60]
zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
格式:zip([iterable, ...])
iterabl -- 一个或多个迭代器;
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
偏函数
偏函数是将所要承载的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数。
# 偏函数可以固定部分数据,只传部分数据
import requests
# res1 = requests.get(url='http://baidu.com',params={'kw':123},header={'asss':1212})
# res1 = requests.get(url='http://baidu.com',params={'kw':124},header={'asss':1212})
# res1 = requests.get(url='http://baidu.com',params={'kw':125},header={'asss':1212})
# res1 = requests.get(url='http://baidu.com',params={'kw':126},header={'asss':1212})
get =partial(requests.get,url='http://baidu.com',header={'asss':1212})

res1 = get(params={'kw':123})
res2 = get(params={'kw':124})
res3 = get(params={'kw':125})\
res4 = get(params={'kw':126})
from functools import partial
# 要获取数据中大于5的数据
li1 = [1,2,3,11,22,33]
li2 = [2,3,4,22,33]
li3 = [3,4,5,33,44,55]
# 使用偏函数来实现
filter2 = partial(filter,lambda x:x>5)
print(list(filter2(li1)))
print(list(filter2(li2)))
print(list(filter2(li3)))

递归函数
递归函数,就是在函数内部调用自身函数
使用递归的时候注意点:一定要设置递归的临界点(终止递归的条件)
例:def mut(n):
if n==1:
return 1
else:
return mut(n-1)*n
res =mut(5)
print(res)
获取最大递归限制
res = sys.getrecursionlimit() #运行后看到最大限制是1000
# 设置最大递归限制
sys.setrecursionlimit(4000) #把最大限制设置为4000
# 不能设置太大,耗内存
闭包函数
闭包函数实现的三个条件:
1、函数中嵌套一个函数
2、外层函数返回的是嵌套的内层函数
3、嵌套的内层函数对外部作用域有非全局变量的引用
例:# 这是一个闭包,函数wrapper引用了百步func的变量a,返回的是内层函数
def func():
a=100
def wrapper():
print(a*2)
return wrapper()
# 这个也是闭包,可以引用外部函数的参数
def func(n):
def wrapper():
print(n)
return wrapper()
闭包的作用是保证了数据的安全

猜你喜欢

转载自www.cnblogs.com/hanatest/p/12956294.html