`

Python map & reduce 以及lambda匿名函数

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2330300

 

map()

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

使用map实现一个f(x) = x * x的功能

def f(x):
    return x * x


m = map(f, list(range(1, 10)))
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
print(list(m))

另外可以使用lambda函数简化

# [1, 4, 9, 16, 25, 36, 49, 64, 81]
print(list(map(lambda x: x * x, list(range(1, 10)))))

Console Output

Note:

可以看出 

lambda x: x * x

实际上就是:

def f(x):
    return x * x

 

把list中的所有数字转为字符串

# ['1', '2', '3', '4', '5', '6', '7', '8', '9']
print(list(map(str, list(range(1, 10)))))

Console Output


 

reduce() 

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

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) 

使用reduce对一个序列求和

from functools import reduce


def add(x, y):
    return x + y

# 55
print(reduce(add, list(range(1, 11))))
# 55
print(reduce(lambda x, y: x + y, list(range(1, 11))))

Console Output

 

把序列[1, 2, 3, 4, 5, 6, 7, 8, 9]变换成整数123456789

from functools import reduce


def fn(x, y):
    return x * 10 + y


# 123456789
print(reduce(fn, list(range(1, 10))))
# 123456789
print(reduce(lambda x, y: x * 10 + y, list(range(1, 10))))

Console Output

 

map()和reduce()整合,把str转换位int

from functools import reduce


def char2num(s):
    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]


# '13579' => 13579
print(reduce(fn, map(char2num, '13579')))
# '13579' => 13579
print(reduce(lambda x, y: x * 10 + y, map(char2num, '13579')))


def str2int(s):
    def fn(x, y):
        return x * 10 + y

    def char2num(s):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

    return reduce(fn, map(char2num, s))


print(str2int('13579'))

Console Output


 

参考资料:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000 

 


  

 


  

 

 

 

 

  • 大小: 1.4 KB
  • 大小: 2.1 KB
  • 大小: 965 Bytes
  • 大小: 2.6 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

    python ---lambda匿名函数介绍

    ### Python Lambda匿名函数详解 #### 一、Lambda函数概述 在Python编程语言中,`lambda`函数是一种特殊类型的函数,通常用于定义简单的、一次性使用的功能。`lambda`函数的主要特点在于它无需像普通函数那样显式...

    Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析

    主要介绍了Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法,结合实例形式分析了Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数相关功能、原理与使用技巧,需要的...

    详解Python匿名函数(lambda函数)

    ### Python匿名函数(Lambda函数)详解 #### 一、Lambda函数简介 在Python编程语言中,**lambda函数**是一种简洁的、定义简单的匿名函数形式。它不像常规的使用`def`关键字定义的函数那样需要显式的命名,而是直接...

    Python之匿名函数共2页.pdf.zip

    Python之匿名函数是编程语言Python中的一个重要特性,它允许我们在不需要定义一个完整函数的情况下,使用一次性、简洁的代码块来执行特定任务。这种函数在Python中被称为lambda函数,源自Lambda演算,它体现了函数式...

    Python lambda表达式filter、map、reduce函数用法解析

    Lambda表达式是一种简洁的创建匿名函数的方式。它的语法形式如下: ```python lambda [arg1, arg2, ..., argn]: expression ``` 这里的`arg1, arg2, ..., argn`是函数的参数,`expression`是函数体,只能是一条...

    初学者python笔记(匿名函数、map()函数、reduce()函数、filter()函数)

    在Python编程语言中,匿名函数、`map()`、`reduce()`和`filter()`函数是非常重要的概念,特别是对于初学者来说,理解这些函数的用途和用法对于提升编程能力至关重要。 匿名函数,通常以`lambda`关键字定义,它是一...

    Python中的特殊语法:filter、map、reduce、lambda介绍

    这些构造包括`filter()`, `map()`, `reduce()`, 以及`lambda`函数。下面我们将逐一深入理解这些概念,并通过示例来阐述它们的用法。 1. **filter(function, sequence)**: 这个函数用于对序列(如列表、元组或字符串...

    Python 如何定义匿名或内联函数

    Python中的匿名函数是通过`lambda`关键字来定义的,因此也被称为`lambda`函数。内联函数则指的是在一行代码内定义的函数,通常与`lambda`函数的概念相吻合,因为它们都强调简洁性。 ### `lambda`函数的基本语法 `...

    python 的函数和 lambda 表达式

    Python还支持匿名函数,也称为lambda表达式。lambda表达式是一种小型匿名函数,通常用于创建简单的函数。lambda表达式的基本语法如下: ```python lambda 参数: 表达式 ``` 使用lambda表达式时,通常会利用Python...

    python自学教程-26-lambda参数之无参数.ev4.rar

    在本教程“python自学教程-26-lambda参数之无参数.ev4”中,我们将深入探讨Python中的lambda函数,这是一种简洁的、用于创建一次性使用的匿名函数的关键字。 lambda函数是Python中的一种快捷方式,它允许我们在一行...

    Python3 中作为一等对象的函数解析

    在Python中,可以使用lambda关键字创建匿名函数。在需要一个函数但是又不想正式定义时,可以使用lambda函数。例如,使用lambda函数作为sorted函数的key参数,可以非常简洁地实现根据单词长度进行排序的需求。 匿名...

    Python语言基础:匿名函数.pptx

    在Python编程语言中,匿名函数是一种特殊的函数定义方式,它不需要使用`def`关键字来创建。这种函数通常被称为lambda函数,因为它们是通过`lambda`关键字来定义的。Lambda函数在处理简短、一次性使用的功能时非常...

    python之匿名函数、面向对象.zip

    在这个名为"python之匿名函数、面向对象.zip"的压缩包中,我们主要探讨的是Python中的两个核心概念:匿名函数(lambda函数)和面向对象编程。 首先,让我们深入了解Python的匿名函数,也称为lambda函数。在Python中...

    python lambda表达式(匿名函数)写法解析

    Python的`lambda`表达式是一种简洁的创建匿名函数的方式。匿名函数意味着它没有具体的名称,而是通过其定义的表达式来引用。`lambda`函数通常用于编写简单的、一次性使用的函数,特别适用于那些在逻辑上不需要定义一...

    浅谈python之高阶函数和匿名函数

    此外,Python还提供了一种特殊的高阶函数——匿名函数,也称为lambda函数。它是一种简化的、快速定义单行函数的方式,通常用于临时性操作。例如: ```python square = lambda x: x ** 2 print(square(5)) # 输出:...

    第九天 02匿名函数【千锋Python人工智能学院】1

    匿名函数,也称为lambda函数,是Python编程语言中一种简洁的定义小型函数的方式。它无需使用常规的`def`关键字来定义,而是通过`lambda`关键字来创建。lambda函数的特性在于其简洁性,通常用于编写一次性、临时性的...

    Python lambda函数基本用法实例分析

    Python的lambda函数是一种简洁的创建小型匿名函数的方式。在Python编程语言中,lambda函数主要用于创建简单的、一次性使用的函数,它们通常在需要一个简短的、快速定义的函数时发挥作用,而不需要编写完整的`def`...

    Python-Python受LISP启发的函数式编程思想

    2. 函数式构造:Python允许使用lambda表达式创建匿名函数,这种简洁的语法受到LISP的启发。lambda函数通常用于临时定义短小的、一次性使用的函数。 ```python # 使用lambda表达式定义一个加法函数 add = lambda x, ...

Global site tag (gtag.js) - Google Analytics