内置函数及匿名函数 补充

一 匿名函数: (lambda表达式)

    关键字:lambda  

    结构: 匿名函数的内存地址=  lambda 参数1,参数2 :返回值/返回值的表达式

    其他的就跟函数的调用接收传参一样

    接收返回值(a)=匿名函数的内存地址(参数),相当于a=func(参数)

  简单例子: 

f=lambda a,b:a+b
print(f(1,2)) 

需要注意的是: 函数的参数可以有多个,之间用逗号隔开,匿名函数不管多复杂,只能写一行,一行结束返回结果,

返回值和正常函数一样,可以是任意数据类型.

二 内置函数:(常用)

  1,max/min  最大值/最小值(直接比较的是数字)

l = [{'name1':10},{'name2':500}]
def func1(n):    # 直接打散  内部结构def max(*args, key=None)
 # print(n) for i in n: return n[i]
print(max(l,key
=func1)) ##{'name2':500}
 

  2 zip  拉链函数  (返回迭代器)

a = (1,2,3,4)
# b = ('a','b','c')
# c = ['111','222']
# d = {'k1':'v1','k2':'v2'}  # 字典取得是key
# ret = zip(a,b,c,d)  # ret是一个迭代器   内部结构zip(iter1 [,iter2 [...]])

  3 filter()     筛选 (返回迭代器)

ret=filter(None,[1,2,3,0,False]) # 只保留真的
print(dir(ret))  # 返回一个迭代器

for i in ret:
    print(i)  # 123


例子2:
# l = [1, 4, 6, 7, 9, 12, 17]
# def func(i):
# if i %2 ==0:
# return True
# ss=filter(func,l) ## 迭代l,每一个元素作为参数传给func,如果func的返回值为True,那么l中的这个元素就保留
# for i in ss:
# print(i) # 4,6,12
 
例子3
# l = ['sjkdhf',[1,2,3],{},()]
# def func(i):
# if type(i) is not dict:
# return True
# ret=filter(func,l) # 第一个放函数名,第二个方可迭代类型数据
# for i in ret:
# print(i)
 

  4 map  映射函数(返回迭代器)

 (一个迭代器中的每个元素都需要去做同一个操作并返回一个结果组成一个新列表时map来处理)
def func(i):
#     return i*'*'
#
# ret = map(func,[1,2,3])  # 第一个参数方函数名 第二个方可迭代类型新数据
# print(ret)  # 迭代器
# for i in ret:
#     print(i)
或print(list(ret)) # 取值

  5 sorted  排序

默认语法:sorted(Iterable, key=None, reverse=False)  key=可以函数 但是
                        返回的还是函数的返回来的值 在在放到sorted里进行排序

 = [1,-3,2]
# # new_l = sorted(l) # 在不改变原列表的情况下 生成一个新列表
# # print(l)
# # print(new_l)
# def func(n):
# return abs(n) abs(取绝对值)
# ret = sorted(l,key = func)
# print(ret)

  6 evai : 将字符串当做python代码执行(网络文件用户输入慎用)

  7 enumerate  (iterable,start)   :# 返回可迭代的

原文地址:https://www.cnblogs.com/systemsystem/p/9940689.html