内置高阶函数

版权声明:皆为本人原创,复制必究 https://blog.csdn.net/m493096871/article/details/86560163

其中.get(A,0)
如果找到A 就返回A对应的value,未找到则返回0,除非保证都能找到,不然得写0


f=sin
f=sin()
区别:第一个可以是f(3)  第二个只是sin()的返回值

def fun(x,y,fc):
    return fc(x),fc(y)
print(fun(-1,-2,abs))

内置高阶函数
map() 接受两个参数,一个函数一个序列
让函数作用序列每一个值
a=map(abs,[1,-1,-3,2])
print(list(a))

返回随即10个2-7数字的阶乘
import random
def jc(n):
    if n==0 or n==1:
        return 1
    else:
        return n*jc(n-1)
a=map(jc,[random.randint(2,7) for i in range(10)])
print(list(a))


reduce:把一个函数作用在一个序列上,这个函数必须接受两个参数
reduce把结果继续和序列的下一个元素累计计算
from functools import reduce
reduce(f,[x1,x2,x3,x4,x5])
=f(f(f(f(x1),x2),x3),x4),x5)

例如
def ss(x,y):
   return x+y
print(reduce(ss,[1,2,3,4,5]))
15


过滤函数
filter函数
类似map,接受函数和序列,
但是filter把传入的函数依次作用于每一个元素,根据返回值
true false决定保留与丢弃


def isodd(x):
    if x%2==0:
    return True
    reture False
print(list(filter(isodd,range(100))))


def zhs(x):
    for i in range(2,x):
        if x %i==0:
            return False
    return True
print(list(filter(zhs,range(2,101))))

li=[1,2,3]
li.sort()
li.sort(reverse=True)
sorted(li)
sorted(li,reverse=True)


li={
    ("a",11,166),
    ("b",13,15),
    ("c",15,16)}
def xs(x):
    return x[1]
def xs2(x):
    return x[2]
print(sorted(li,key=xs))
print(sorted(li,key=xs2))
[('a', 11, 166), ('b', 13, 15), ('c', 15, 16)]
[('b', 13, 15), ('c', 15, 16), ('a', 11, 166)]

排序初步

li = [4, 0, 7, 0, 2]
def xc(x):
    if x == 0:
        return 1
    else:
        return 0
print(sorted(li,key=xc))

首先生成对应值下标
[4,0,7,0,2]            [4,7,2,0,0]
[0,1,0,1,0] 再根据下标从小到达排序[0,0,0,1,1]
返回大的值在后面
也可以return 3  2  想要排序在后面的元素必须要返回值大于在前面的值

################################
li = [4, 0, 7, 1, 0, 2, 3]


def xc(x):
    if x == 0:
        return 4
    elif x == 1:
        return 3
    else:
        return 2


print(sorted(li, key=xc))

################################

猜你喜欢

转载自blog.csdn.net/m493096871/article/details/86560163
今日推荐