资讯专栏INFORMATION COLUMN

python_bomb----高阶函数

Pocher / 3518人阅读

摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。

高阶函数

实参是一个函数名

函数的返回值是一个函数

print(abs(-10))
f = abs
print(f(-10))

#传递的参数包含函数名。
def myfun(x,y,fun):
    return f(x),f(y)

print(myfun(-10,23,abs))



10
10
(10, 23)

python内置高阶函数 map()函数

map() 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 list 返回。

#随机生成一个长度为10,元素在2~7之间的列表
#对列表里所有元素求阶乘
import random

lee= [random.randint(2,7) for i in range(10)]
print(lee)

def mult(x):
    rs=1
    for i in range(1,x+1):
        rs=i*rs
    return rs
print(map(mult,lee))
print(list(map(mult,lee)))



[2, 6, 5, 3, 3, 3, 3, 5, 4, 6]

[2, 720, 120, 6, 6, 6, 6, 120, 24, 720]

reduce()函数

把当前输出作为下一次运算的输入

python2中为内置函数

python3需要导入,from functools import reduce

#求10的阶乘
from functools import reduce
def multi(x, y):
    return x * y

# [1,2,3] ---> multi(multi(1,2),3)
c = reduce(multi, range(1, 11))
print(c)

filter()函数

filter() 也接收一个函数和一个序列。和 map() 不同的时,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True还是 False 决定保留还是丢弃该元素。

#求0~10之间的奇数
def isodd(x):
    return x % 2 != 0

# [i for i in range(100,111) if i %2 !=0]

d = filter(isodd, range(0, 11))
print(d)
print(list(d))



[1, 3, 5, 7, 9]

匿名函数

匿名函数定义规则

   lambda 形参:返回值

from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

15
列表里嵌套列表进行排序
d = {
    "001":{
        "name":"apple",
        "count":124,
        "price":1000
    },
    "002":{
        "name":"banana",
        "count":8,
        "price":1024
    }
}
#列表里嵌套元组
print(d.items())    #按key值排序
print(sorted(d.items(),key=lambda x:x[1]["count"]))
print(sorted(d.items(),key=lambda x:x[1]["price"]))

#itemgetter会忽略key值
print(sorted(d.values(),key=itemgetter("count")))
print(sorted(d.values(),key=itemgetter("price")))



dict_items([("001", {"name": "apple", "count": 124, "price": 1000}), ("002", {"name": "banana", "count": 8, "price": 1024})])
[("002", {"name": "banana", "count": 8, "price": 1024}), ("001", {"name": "apple", "count": 124, "price": 1000})]
[("001", {"name": "apple", "count": 124, "price": 1000}), ("002", {"name": "banana", "count": 8, "price": 1024})]
[{"name": "banana", "count": 8, "price": 1024}, {"name": "apple", "count": 124, "price": 1000}]
[{"name": "apple", "count": 124, "price": 1000}, {"name": "banana", "count": 8, "price": 1024}]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42249.html

相关文章

  • python_bomb----小白学装饰器

    什么是装饰器? 装饰器就是用来装饰函数。 想要增强原有函数的功能 但不希望修改原有函数的定义 在代码运行期间动态增加功能的方式 函数嵌套函数 调用方式:原函数 = 外层函数(原函数名)原函数 def desc(fun): def add_info(): print(happy today) fun() print(westos_linux...

    mikasa 评论0 收藏0
  • python_bomb----函数高级特性(生成器)

    迭代 可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)只要是可迭代对象,都可以迭代,比如字典默认情况下,字典迭代的是key值如何让判断一个类型是否可迭代 from collections import Iterable #导入collections模块的Iterable类型判断方法 print(isinstance({abc:1},Itera...

    JouyPub 评论0 收藏0
  • python_bomb----排序函数

    摘要:和列表里提供了方法,其他数据类型不能用可以对任何可迭代对象排序方法支持原地排序,变量排序后,变量本身改变方法返回一个新的列表,并不改变原变量的内容不改变原有列表次序默认和方法由小到大排序,时,从大到小排序字典排序商品名称,数 li.sort()和sorted() 列表里提供了sort方法,其他数据类型不能用 sorted可以对任何可迭代对象排序 sort方法支持原地排序,变量排序后...

    darcrand 评论0 收藏0
  • python_bomb----函数

    摘要:函数的定义范例总结无参函数名快注释函数体定义函数,并不会执行函数体里面的内容调用函数的过程函数里面嵌套函数调用外层函数时,内层函数不会执行变量参数定义函数时的变量,称做形参,可以任意命名真实的数据信息,调用函数时传递的参数,称为实参是形参是 函数的定义 范例 def print(self, *args, sep= , end=n, file=None): 总结 无参 def 函数名...

    oogh 评论0 收藏0
  • python_bomb----包

    摘要:什么是包为了组织好模块,会将多个模块分为包。处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在文件。最简单的情况下,只需要一个空的文件即可。当然它也可以执行包的初始化代码包底下也能包含包,这和文件夹一样,还是比较好理解的。 什么是包? 为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__....

    LeanCloud 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<