资讯专栏INFORMATION COLUMN

5-高阶函数

cartoon / 534人阅读

摘要:接受个参数,一个函数,一个,返回强转由于是惰性序列转字符串多参数映射当多个列表元素个数不同时,以最小个数的为基准把一个函数作用在一个序列上设置为初始值这个函数必须接收两个参数,把结果继续和序列的下一个元素做累积计算把序列变成整数用于过滤序列

map

map()接受2个参数,一个函数 , 一个Iterable,返回Iterator

def f(x):
    return x*x
r = map(f, [1, 2, 3, 4 ,5])
print(list(r))  # 强转 由于Iterator是惰性序列

list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) # 转字符串

多参数映射:当多个列表元素个数不同时,以最小个数的为基准

list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
list3 = [1, 2, 3, 4]
list4 = [1, 2, 3, 4]


def addList(x, y, z, k):
    return  x + y + z + k
print(list(map(addList, list1,list2,list3,list4)))


reduce

把一个函数作用在一个序列[x1, x2, x3, ...]上
reduce(func, iter [,initail]) initail设置为初始值
这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

# 把序列变成整数13579
from functools import reduce
def fn(x,y):
    return  x*10 + y
print(reduce(fn, [1, 3, 5, 7, 9]))
filter

用于过滤序列 然后根据返回值是True还是False决定保留还是丢弃该元素

def is_odd(n): # 删除偶数
    return n%2 ==1
print(list(filter(is_odd, [1, 2, 4, 5, 7, 10, 15]))) 
# 返回都是是迭代器

# 把序列中的空字符串去掉
def not_empty(s):
    return s and s.strip()
print(list(filter(not_empty, ["A", "", "B ", None, "C", "  "])))

# 求素数
#计算素数的一个方法是埃氏筛法
def _odd_iter():  # 构成一个从3开始的奇数序列
    n =1            # 注意这是一个生成器,并且是一个无限序列
    while True:
        n = n + 2
        yield n

def _not_divisible(n): # 筛选函数
    return lambda x:x%n > 0 #获得对n取余不为0的序列(比如删除所有是2倍数的数字)


def primes():   # 定义一个生成器,不断返回下一个素数
    yield 2
    it = _odd_iter() # 初始化序列
    while True:
        n = next(it)
        yield n
        it = filter(_not_divisible(n), it)


for n in primes():
    if n < 1000:
        print(n)
     else:
         break
sorted

返回一个列表,如果对字典sorted,返回一个列表,列表中的元组存放键值对

print(sorted([-36, 5, -12, 9]))
print(sorted([-36, 5, -12, 9], key=abs)) # 按绝对值排序
print(sorted(["bob", "about", "Zoo", "Credit"], key=str.lower)) # reverse=True

L = [("Bob", 75), ("Adam", 92), ("Bart", 66), ("Lisa", 88)]

print(sorted(L, key=lambda t:t[1]))  # 按成绩排

# 字典按键排序
sorted(dict1.items(), key = lambda x:x[0])
# 字典按值排序
sorted(dict1.items(), key = lambda x:x[1])

# a = [{"年龄":12, "姓名":"7刘"},{"年龄":11, "姓名":"7刘"},{"年龄":18, "姓名":"6刘"},{"年龄":7, "姓名":"刘"}]
# 字典没有.sort方法 而列表可以用
a.sort(key=lambda x:x["年龄"])

    

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

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

相关文章

  • 【进阶 6-1 期】JavaScript 高阶函数浅析

    摘要:引言本期开始介绍中的高阶函数,在中,函数是一种特殊类型的对象,它们是。简单来说,高阶函数是一个接收函数作为参数传递或者将函数作为返回值输出的函数。我们来看看使用它们与不使用高阶函数的方案对比。引言 本期开始介绍 JavaScript 中的高阶函数,在 JavaScript 中,函数是一种特殊类型的对象,它们是 Function objects。那什么是高阶函数呢?本节将通过高阶函数的定义来展...

    yiliang 评论0 收藏0
  • 【JS必知必会】高阶函数详解与实战

    摘要:函数作为参数情况,,和是中内置的高阶函数。知道了到底啊什么是高阶函数,有哪些类型的高阶函数。公众号技术栈路线大家好,我是,公众号程序员成长指北作者,这篇文章是必知必会系列的高阶函数讲解。 前言 一道经典面试题: //JS实现一个无限累加的add函数 add(1) //1 add(1)(2) //3 add(1)(2)(3) //6 当大家看到这个面试题的时候,能否在第一时间想到...

    李昌杰 评论0 收藏0
  • React 深入系列6:高阶组件

    摘要:在项目中用好高阶组件,可以显著提高代码质量。高阶组件的定义类比于高阶函数的定义。高阶函数接收函数作为参数,并且返回值也是一个函数。 React 深入系列,深入讲解了React中的重点概念、特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React。 1. 基本概念 高阶组件是React 中一个很重要且比较复杂的概念,高阶组件在很多第三方库(如Redux)中都...

    2shou 评论0 收藏0
  • Python 函数式编程 - 高阶函数

    摘要:对函数式编程提供部分支持。对于纯函数编程,对任一函数,只要输入是确定的,输出就是确定的,可称之为无副作用。二函数式编程的内建函数语法,接收两个参数,一个是函数,一个是可迭代对象。 Functional Programming,函数式编程。Python对函数式编程提供部分支持。对于纯函数编程,对任一函数,只要输入是确定的,输出就是确定的,可称之为无副作用。 一、高阶函数 1、变量指...

    Dogee 评论0 收藏0
  • python疑问7:高阶函数,匿名函数,装饰器,偏函数总结

    摘要:本文是学习廖雪峰官网网站教程后总结的,供日后参考用高阶函数一个函数将另一个函数作为参数,称为高阶函数。 本文是学习廖雪峰官网网站python教程后总结的,供日后参考用1.高阶函数一个函数将另一个函数作为参数,称为高阶函数。当然也可以将一个函数作为结果返回 示例1:将函数作为参数 def add(x,y,f): return f(x)+f(y) result = add(-3,2...

    jerry 评论0 收藏0
  • 高阶组件HOC - 小试牛刀

    摘要:因为这个高阶函数,赋予了普通组件一种呼吸闪烁的能力记住这句话,圈起来重点考。其实,高阶组件就是把一些通用的处理逻辑封装在一个高阶函数中,然后返回一个拥有这些逻辑的组件给你。 原文地址:https://github.com/SmallStoneSK/Blog/issues/6 1. 前言 老毕曾经有过一句名言,叫作国庆七天乐,Coding最快乐~。所以在这漫漫七天长假,手痒了怎么办?于是...

    lookSomeone 评论0 收藏0

发表评论

0条评论

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