我的编程空间,编程开发者的网络收藏夹
学习永远不晚

3.python中map,filter,

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

3.python中map,filter,

一.map函数,对任何可迭代序列中的每一个元素应用对应的函数。(不管处理的是什么类型的序列,最后返回的都是列表。)

作用已经在标题中介绍过了,那么先来说说map函数的用法吧。

map(处理逻辑可以是函数也可以是lambda表达式,可迭代的序列)

现在有一个列表。

l1 = [1,2,3,4,5]

现在需要给这个列表里的每一个元素都+1。(当然,使用for循环可以做到对序列中的每个元素进行处理,但使用map函数会更加方便。)

首先,定义一个逻辑函数,要如何对序列中的每一个元素进行处理。

def plus(x):

    return x + 1

#每个元素都+1

print map(plus,l1)

#将map函数应用到l1的每一个元素中。

输出的结果为。

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


当然,传入map函数中的逻辑函数还可以使用lambda表达式来表示,还拿刚才的例子演示。

l1 = [1,2,3,4,5]

print map(lambda x:x+1,l1)

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


那么map函数是怎么做到的?内部功能是如何实现的?下面就来对map函数的内部进行剖析。

下面这个函数就可以实现和python内置的map函数一模一样的功能。

def map_func(func,seq):

    map_list = []

    for i in seq:

        map_list.append(func(i))

    return map_list


注意!上面说的map函数的使用方法是针对python2.7版本的,针对python3以上的版本不适用,因为从python3开始,map函数不再返回列表,返回的则是一个迭代器,如果想变成列表的话,还需要使用list() 函数做一个转换。



二.filter函数,对序列中的元素进行判断筛选。(返回的结果依旧是个列表。)

fileter函数在拿到一个序列的时候,会开始循环迭代这个序列中的每一个元素,对每一个元素都进行一次if判断,结果为True的加入到列表中,为False的,直接丢掉。

下面是filter函数的简单用法。

一个列表,将这个列表中小于5的元素,全部都列出来。(当然...这么简单的需求也可以使用for循环实现)

filter函数用法和map函数一样都是 filter(函数,可迭代序列)

l1 = [1,2,3,4,5,6,7,8,9,10]


def greater_than(x):

    if x < 5:

        return True

    else:

        return False


print filter(greater_than,l1)

>>>[1, 2, 3, 4]


filter函数依旧可以使用lambda表达式来代替逻辑函数。

print filter(lambda x:x<5,l1)


下面来剖析一下filter函数的工作原理,自己手动写一个和filter功能一模一样的函数:

def filter_func(func,seq):

    filter_list = []

    for s in seq:

        if func(s):

            filter_list.append(s)

    return filter_list


注意啦!这里面的filter函数和map函数一样,用法都是针对python2.7的,在python3中对这个函数做了一些改动,返回的不再是个列表,而是个迭代器。


三.reduce函数,将序列中所有的元素进行合并运算。

现在有个列表,现在需要每个元素要逐个相乘。


l1 = [1,2,3,4,5,6,7,8,9,10]

#reduce函数规定了,一定要传递一个支持一个二元操作的函数

#下面就是定义好的逻辑函数

def bin_func(x,y):

    return x * y


print reduce(plus,l1)

>>> 3628800

下图是reduce函数的工作原理:

wKioL1jNAN2A82opAAC63NnUCNs013.png


接下来,解剖下reduce函数的实现代码。

def reduce_func(func,seq,init_num=None):

    if init_num != None:

        ret = init_num

    else:

        ret = seq.pop(0)

    for i in seq:

        ret=func(ret,i)    #如果这条逻辑不好理解的话,可以仔细想想1*2*3*4 = ((1*2)*3)*4 

    return ret


print reduce_func(bin_func,l1)


>>>3628800


reduce函数使用lambda表达式。

print reduce_func(lambda x,y:x*y,l1)


注意!在python3当中,这个reduce函数被放到了functools这个模块中了,需要倒入functools才可以使用这个函数。


最后总结一下:

map函数用于处理序列中每一个元素。

filter函数用于过滤序列中每一个元素。

reduce函数用于做序列的合并操作。

reduce即为化简,它是这样一个过程:每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

3.python中map,filter,

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

3.python中map,filter,

一.map函数,对任何可迭代序列中的每一个元素应用对应的函数。(不管处理的是什么类型的序列,最后返回的都是列表。)作用已经在标题中介绍过了,那么先来说说map函数的用法吧。map(处理逻辑可以是函数也可以是lambda表达式,可迭代的序列)
2023-01-31

python 中的filter, map

python 中的filter, map, reduce方法解释:filter:filter方法调用:resultlst = filter(func, seq)@param func:可调用对象,接受seq中的元素作为参数@param se
2023-01-31

Python -- filter,map

1.filter:Type:    builtin_function_or_methodBase Class:  String Form:  
2023-01-31

Python Map, Filter a

所属网站分类: python基础 > 函数作者:慧雅原文链接: http://www.pythonheidong.com/blog/article/21/来源:python黑洞网 www.pythonheidong.com这三个功能有助于编
2023-01-31

python中filter,map,reduce的作用是什么

这篇文章主要介绍“python中filter,map,reduce的作用是什么”,在日常操作中,相信很多人在python中filter,map,reduce的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-07-02

python如何使用Map和Filter函数

这篇文章主要介绍了python如何使用Map和Filter函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Map和Filter一旦掌握了lambda表达式,学习将它们与Ma
2023-06-27

python中map和filter函数的区别是什么

python中map和filter函数的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python的五大特点是什么python的五大特点:1.简单易学,开发程序时
2023-06-14

python内置函数:lambda、map、filter简单介绍

lambda lambda可以理解为一种小函数,但是它是一个表达式,而不是一个语句,所以在def不允许出现的地方仍然可以使用lambda函数,例如list里。但是lambda内只可以执行一个表达式。def f(x): return x**2
2022-06-04

Python内置函数Map、Reduce和Filter的作用

本篇内容主要讲解“Python内置函数Map、Reduce和Filter的作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内置函数Map、Reduce和Filter的作用”吧!1.
2023-06-02

JS中forEach()、map()、every()、some()和filter()怎么用

今天小编给大家分享一下JS中forEach()、map()、every()、some()和filter()怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有
2023-06-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录