返回顶部
首页 > 资讯 > 后端开发 > Python >Python3的高阶函数map,red
  • 486
分享到

Python3的高阶函数map,red

高阶函数map 2023-01-31 08:01:05 486人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。注意其中:map和filter返回一个惰性序列,可迭代对象,需要转化为list >>> a = 3.1415 >>&g

函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
注意其中:map和filter返回一个惰性序列,可迭代对象,需要转化为list

>>> a = 3.1415
>>> round(a,2)
3.14
>>> a_round = round
>>> a_round(a,2)
3.14
>>> def func_devide(x, y, f):
    return f(x) - f(y)
#传递参数为函数
print(func_devide(9.3, 3.2, round))
1. map函数

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

>>> print(list(map(str, [1, 2, 3])))
['1', '2', '3']
>>> dt = map(str,[-1,2,3,4,5,-34,-45,-23.454])
>>> dt
<map object at 0x10f431dd8>
>>> list(dt)
['-1', '2', '3', '4', '5', '-34', '-45', '-23.454']
>>> dt = map(abs,[-1,2,3,4,5,-34,-45,-23.454])
>>> list(dt)
[1, 2, 3, 4, 5, 34, 45, 23.454]

注意报错:TypeError: 'map' object is not callable
一般出现的原因是迭代对象(str,abs等)或者函数(map)被修改,不再是原来的函数,导致出现不可迭代对象

2. reduce函数

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。返回的是一个计算的最终结果,函数接收两个参数:

 def add(x,y):
...     return x + y
... 
>>> reduce(add,[1,2,3,4,5,6,7,8,9,10])
55
>>> def concate(x,y):
...     return str(x)+str(y)
... 
>>> reduce(concate,[1,2,3,4,5,6,7,8,9,0])
'1234567890'

reduce和map函数结合做字符串转整型(或者整型转字符串)

>>> str = '12121212132323'
>>> dic_str_int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
>>> def str_arr(x):
...     dic_str_int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
...     return dic_str_int[x]
... 
>>> def int_dum(x,y):
...     return 10*x + y
... 
>>> reduce(int_dum,map(str_arr,str))
12121212132323
  • 示例,转换列表内数据为大写,首字母大写
>>> names = ['jack','john','wilianmon','jobs','bill','gates']
>>> def str_upper(string):
...     return string.upper()
... 
>>> names = map(str_upper,names)
>>> list(names)
['JACK', 'JOHN', 'WILIANMON', 'JOBS', 'BILL', 'GATES']
>>> def str_capitialize(string):
...     return string.capitalize()
... 
>>> names = ['jack','john','wilianmon','jobs','bill','gates']
>>> 
>>> names = map(str_capitialize,names)
>>> list(names)
['Jack', 'John', 'Wilianmon', 'Jobs', 'Bill', 'Gates']
  • 列表内参数求所有元素乘积:
int_li = [2,3,5,10]
>>> reduce(lambda x, y: x*y,int_li)
300
>>> def func_mult(li=None):
...     return reduce(lambda x, y: x*y,li)
... 
>>> func_mult(int_li)
300

上面的可以根据需要转成函数,更方便调用

  • '123.456'转成整数123.456

方法一:截断之后拼接

def string_int(strs):
    str_li = strs.split('.')
    def str_int(str):
        dic_str_int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
        return dic_str_int[str]
    int_1 = reduce(lambda x, y: x*10+y, list( map(str_int,str_li[0])))
    int_2 = reduce(lambda x,y: x*10 + y,list(map(str_int,str_li[1])))
    return int_1 + int_2/(10**(len(str_li)+1))

res = string_int('123.456')
print(res)
#结果:123.456

方法二: 转成纯数字字符串

def string_int1(strs):
    # 记住位置,替换
    point_len = len(strs) - strs.find('.')-1
    str_li = strs.replace('.', '')
    def str_int(str):
        dic_str_int = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
        return dic_str_int[str]
    int_num = reduce(lambda x,y: x*10 + y,list(map(str_int,str_li)))
    return int_num/(10**(point_len))

res = string_int1('123.456')
print(res)
#结果:123.456
3. filter函数

filter()也接收一个函数和一个序列。从一个序列中筛出符合条件的元素。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
注意:和map函数的区别

函数名 区别
map 作用于每个可迭代对象的元素,并返回处理之后的元素
filter 作用于可迭代内每个元素,根据计算后结果:True保留,Flase去掉

eg: 获取列表内所有的整数类型元素

def only_int(x):
    try:
        if isinstance(x, int):
            return True
        else:
            return False
    except ValueError as e:
        return False

dt = filter(type_int,[1,2,3,3,'3232',-34.5,34.5])
>>> list(dt)
[1, 2, 3, 3]

。。。

--结束END--

本文标题: Python3的高阶函数map,red

本文链接: https://lsjlt.com/news/193375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python3的高阶函数map,red
    函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。注意其中:map和filter返回一个惰性序列,可迭代对象,需要转化为list >>> a = 3.1415 >>&g...
    99+
    2023-01-31
    高阶 函数 map
  • python3--高阶函数
    # Auther: Aaron Fan'''# 高阶函数:把一个函数名,以实参的形式,传给这个函数的形参,这个函数就称为高阶函数。比如下面的形参c,对应的实参是一个函数名abs。# 函数abs()的功能是取绝对值def add(a,b,c)...
    99+
    2023-01-31
    高阶 函数
  • Python3的高阶函数怎么用
    本篇内容介绍了“Python3的高阶函数怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.高阶函数# 1.变量指向函数#&n...
    99+
    2023-06-28
  • Python高阶函数map()怎么使用
    这篇文章主要介绍了Python高阶函数map()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python高阶函数map()怎么使用文章都会有所收获,下面我们一起来看看吧。简介:格式:map(funct...
    99+
    2023-07-05
  • python3--函数进阶
    例子def func(a,b,c,d,e,f,g):    passprint(func(a, b , c, d, e, f, g))如果再加30个参数呢?,在后面继续添加?有没有万能的参数,可以代表一切参数呢?*arg...
    99+
    2023-01-30
    进阶 函数
  • Python3下map函数的问题
    今天在群里有人问题,他的Python程序在家里运行好好的,但在公司一运行,就出问题了,查来查去查不出来,于是我就把他的程序调转过来看了一下,发现又是Python2.7与Python3的问题。代码是做了一个可定义任意位数的水仙花数函数def ...
    99+
    2023-01-31
    函数 map
  • Python高阶函数map()简介和使用详解
    目录简介:示例:示例(1):输出map()函数返回值(迭代器)结果示例(2):与循环对比示例(3):字符串转列表示例(4):元组转列表示例(5):提取字典的键key,通过函数作用放入...
    99+
    2023-03-03
    Python 高阶函数map使用 Python map函数
  • python中三种高阶函数(map,reduce,filter)详解
    map(function,seq[,seq2]) 接收至少两个参数,基本作用为将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列 返回一个可迭代的map对象 f...
    99+
    2024-04-02
  • 一篇文章带你学习Python3的高阶函数
    目录1.高阶函数2.map/reduce3.filter4.sorted总结1.高阶函数 # 1.变量指向函数 # 调用函数和函数本身 print("-10的绝对值为:",abs(-...
    99+
    2024-04-02
  • 详解Python中高阶函数(map,filter,reduce,sorted)的使用
    目录什么是高阶函数自定义一个高阶函数常用的内置高阶函数map函数参数说明功能实例filter函数功能实例reduce函数功能实例sorted函数参数说明功能实例sort和sorted...
    99+
    2024-04-02
  • 高阶函数
    一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数 编写高阶函数,就是让函数的参数能够接收别的函数 函数式编程就是指这种高度抽象的编程范式 高阶函数的特点   变量可以指向函数     函数本身也可以赋值给变量,即:变...
    99+
    2023-01-31
    高阶 函数
  • Python 高阶函数
    高阶函数:简单来讲,一个函数可以接收另一个函数来作为参数,这样的函数称之为高阶函数 map函数 会根据提供的函数对指定序列做映射,也就是说将函数作用在指定序列 语法为 map(function,interable...) ...
    99+
    2023-01-30
    高阶 函数 Python
  • python高阶函数
    高阶函数定义:1.函数接收的参数是一个函数名;2.函数返回的是一个函数名;只要满足上述条件中的任意一个条件的函数均属于高阶函数 例如:1.函数接收的参数为函数名2.函数返回的结果为函数名3.函数接收的参数为函数名,函数返回的结果为函数名...
    99+
    2023-01-31
    高阶 函数 python
  • Python常见内置高阶函数即高阶函数用法
    目录1.什么是高阶函数?2.高阶函数-map、filter、reduce2.1map函数2.2filter函数2.3reduce函数1.什么是高阶函数?   高阶函数:一个函数可...
    99+
    2024-04-02
  • Oracle函数-高阶篇
    下面整理了部分oracle函数-高阶篇:1、 CATSTR    举例:SELECT CATSTR(COLUMN_NAME) NAME_LIST FROM DBA_TA...
    99+
    2024-04-02
  • python 高阶函数:Decorato
    装饰器:原函数基础 ------> 动态添加功能一、不带参数的decorator#decorator封装def log(func):    def wrapper(*args, **kw):        print 'call %s...
    99+
    2023-01-31
    高阶 函数 python
  • Python基础【高阶函数】
    map(fun,seq) 将seq中的元素依次作为参数传入fun,返回由函数返回值组成的新的列表。 python3:返回一个map对象 python2:返回列表 可以用list将对象转换为列表进行调用 代码: def f...
    99+
    2023-01-31
    高阶 函数 基础
  • Python_内建高阶函数
    sorted(iterable[,key][,reverse])排序  返回一个新列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是否排序翻转  sorted(lst,key=lambda x: 6-x)...
    99+
    2023-01-31
    内建 高阶 函数
  • python之高阶函数和匿名函数
    map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 1 def func(x): 2 return x*x 3 4 r = ma...
    99+
    2023-01-30
    函数 高阶 python
  • JavaScript高阶函数怎么用
    本篇内容主要讲解“JavaScript高阶函数怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript高阶函数怎么用”吧! 数组方法 高阶函...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作