Python3 学习笔记20_函数式编程-高阶函数-map/reduce_20180312

Python map()-reduce() 把字符串转换成浮点数 声明: 我写此文的目的是帮助和我一样在廖雪峰老师官网上学习Python3的同学更好的理解和学习Python的知识,所以本博文及后续文章会跟着我的学习进度来走,主要内容是廖雪峰老师官网Python资料中每节知识点后的复习题的答案和解析,有一些是我自己原创的,有一些是网上整理的大神写的简洁但对新手并不是很明了的答案,我会尽可能的给出我的解析。 阅读详情
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 学习网站:www.liaoxuefeng.com

#****************************************************
#       Python3 函数式编程-高阶函数-map/reduce       *
#****************************************************
print ("--------------------分割线------------------")

#============
# map()
#============
'''
map()函数接收两个参数,一个是函数,一个是Iterable。map将传入的函数依次
作用到序列的每个元素,并把结果作为新的Iterator返回。
'''
# 例:函数func(x)=x的平方,要把这个函数在一个list上,就可以用map实现
from collections import Iterator

def func(x):
    return x * x

list_a = [ x for x in range(1,8) ]
print( list_a )                         # [1, 2, 3, 4, 5, 6, 7]

map_t = map( func, list_a ) 
print( isinstance(map_t, Iterator) )    # True

print( next(map_t), next(map_t) )       # 1 4

for val in map_t:
    print( val, end=' ' )               # 9 16 25 36 49 
print()

'''
map()传入的第一个参数是func,即函数对象本事。由于结果map_t是一个
Iterator,Iterator是惰性序列,因此通过next()函数和for循环把整个序列
计算出来

for循环也可以实现整个列表的平方,但没有map()简单清晰明了。map作为高阶
函数,事实上它把运算规则抽象了。
'''
# 将列表中所有数字转为字符串
print( list( map(str, [1,2,3]) ) )      # ['1', '2', '3']
print ("--------------------分割线------------------")

#============
#  reduce()
#============
'''
reduce 把一个函数作用在一个序列[1, 2, 3]上,这个函数必须接收两个参数
reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(func, [x1, x2, x3]) = func(func(x1, x2), x3)
'''
# 序列求和计算,reduce版本
from functools import reduce
def func_add(x, y):
    return x + y

print( reduce(func_add, [1, 2, 3, 4]) )         # 10

# 字符串str转换为int函数
from functools import reduce
def func2(x, y):
    return x*10 + y

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

print( reduce(func2, map(char2num, '13456')) )  # 13456

# 整理成一个str2int的函数
from functools import reduce

DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,\
            '5':5,'6':6,'7':7,'8':8,'9':9}

def str2int(s):
    def func3(x, y):
        return x*10 + y
    def char2num(s):
        return DIGITS[s]
    return reduce(func3, map(char2num, s))

print( str2int('120030') )                      # 120030

# 使用lambda函数进一步简化:
def Str2Int(s):
    return reduce(lambda x,y:x*10+y, map(char2num,s))

print( Str2Int('120030') )                      # 120030
print ("--------------------分割线------------------")


#利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他
#小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']
L1 = ['adam', 'LISA', 'barT']

def normalize(s):   
    return s[0].upper()+s[1:].lower()

L2 = list(map(normalize, L1))
print(L2)                               # ['Adam', 'Lisa', 'Bart']


# Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,
# 可以接受一个list并利用reduce()求积
from functools import reduce

def prod(L):
    return reduce(lambda x, y:x*y, L)

print( prod([2,3,6]) )                  # 36


# 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456
def str2float(s):
    return reduce(lambda x,y:x*10+y,map(int,s.replace('.','')))/10**s.find('.')

print( str2float('123.456') )           # 123.456
椭圆 —— 从理论推导到最小二乘法拟合 前言 椭圆在高中数学里就开始提到,都是从标准方程开始如: x2a2+y2b2=1(a>b>0) \frac{x^2}{a^2}+\frac{y^2}{b^2}=1(a>b>0) a2x2​+b2y2​=1(a>b>0) 其中 aaa 为椭圆的长轴,bbb 为椭圆短轴。如长轴为 111 ,短轴为 0.50.50.5 的椭圆可以这样画出 ezplot('x^2/1^2 + y^2/0.5^2 = 1',[-1.5 1.5 -1 1]) grid on; 标准方程可以很方便 阅读详情

相关推荐

Fiddler抓包实战:5分钟搞定微信公众号历史消息接口分析(附完整Python代码)

本文详细介绍了如何使用Fiddler抓包工具逆向分析微信公众号历史消息接口,并提供完整的Python代码实现。从环境准备、动态参数捕获到商业级采集系统架构设计,全面解析了突破官方接口限制的技术方案,帮助开发者高效获取公众号文章数据。

tree8的博客 329

Map函数的使用

Map函数 [例]输出范围在100-999的水仙花数(水仙花数:一个三位的十进制数,其各位数字的立方和等于该数本身。例如:153=1³+3³+5³) # 使用map函数 for num in range(100, 1000): r = map(lambda x: int(x)**3, str(num)) # map函数叠加lambda if sum(r) == num: ...

Lernmor的博客 1342

气象干旱触发水文(农业)干旱的概率及其触发阈值的动态变化-贝叶斯copula模型

本文通过建立不同类型干旱传播过程的触发阈值模型,解析了在不同等级气象干旱胁迫下诱发次一级干旱类型的触发阈值。通过贝叶斯概率模型,我们推导了气象干旱与水文干旱、农业干旱、地下水干旱之间的条件概率关系,进一步明确了气象干旱引发水文干旱、农业干旱和地下水干旱的概率及其触发阈值。该模型有效揭示了气象干旱对各级干旱类型的传播机制及其动态变化,为干旱预警系统的建立和水资源管理提供了理论依据和技术支持。

frankgis的博客 2503

1 10 100 1000(map的应用)

题目描述 1,10,100,1000…组成序列1101001000…,求这个序列的第N位是0还是1。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000) 第2 - T + 1行:每行1个数N。(1 <= N <= 10^9) Output 共T行,如果该位是0,输出0,如果该位是1,输出1。 Sample Input 3 1 2 3 Sample Output 1 1 0 题目分析 先预处理出所有1的位置,用map存下来。

li_wen_zhuo的博客 831

CSR mascon产品深度解析

GRACE数据产品 mascon产品 质量变化 地球重力场

weixin_43047707的博客 4434

Planet explorer:免费获取高分辨率影像的网站

该软件提供了高质量的卫星图像和地形数据,用户可以使用该软件来查看地球上任何地方的详细地图信息,包括地形、道路、建筑物等。在接下来的30天里,你可以点击应用顶部的切换按钮,在新的和当前的应用之间进行切换。如果在你感兴趣的地区没有高分辨率图像,可以通过我们的SkySat卫星为你采购。如果你还没有与我们的50厘米图像合作,请在这里下载我们的高分辨率图像样本,或联系销售,在你的合同中增加任务访问。你可以在 "我的订单 "中订购你的数据以供下载。你也可以点击双方按钮,将图像的足迹锁定在地图上,以获得更好的。

此星光明博客 1681

python3 map()函数

描述 map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 语法 map() 函数语法: map(function, iterable, …) 参数 function – 函数 iterable – 一个或多个序列 实例.: 将列表的字符串元素转为int类型 map(int, [‘1’,‘2’,‘3’,‘4’,‘5’]) >>>[1, 2, 3, 4, 5

i_newbie的博客 439

使用R语言实现循环神经网络RNN进行文本生成

首先,让我们回顾一下循环神经网络(Recurrent Neural Networks,RNN)的基本概念。RNN是一种深度学习技术,特别适合处理序列数据,如时间序列和文本数据。RNN的关键特性是它的隐藏状态,这个状态可以捕捉到当前输入之前的信息。这使得RNN能够利用前面的信息来影响后续的输出,从而对序列数据进行有效的处理。

斌擎科技 724

python3进阶-微课学习-第一章 函数式编程

学习整理

Xiaowu2048的博客 190

手把手教你学Simulink——基于Simulink的隔离型DC-DC全桥变换器移相控制建模示例

本文详细介绍了基于Simulink的全桥移相变换器(PSFB)建模与控制方法。首先分析了全桥移相拓扑在大功率应用中的优势,包括ZVS实现、高频化和小型化特点。随后给出了具体设计参数和移相控制策略,采用电压外环+移相角内环的双闭环控制架构。文章重点演示了Simulink建模步骤,包括主电路搭建、移相PWM生成和PI控制器设计,并通过满载稳态、负载阶跃和轻载测试三种场景验证了系统性能。最后总结了工程实践要点,提出自适应控制等扩展方向,强调移相控制通过精准时间管理实现高效能量转换的核心价值。

MHD0815的博客 261

华为OD机试真题 新系统2026-04-08 C语言 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 183

Python函数式编程

文章目录1.高阶函数1.1函数map/reduce1.1.1函数map1.1.2函数reduce1.1.3结合使用1.2函数filter1.2.1filter()函数1.2.2用filter求素数1.2.3回数1.3函数sorted2.返回函数2.1函数作为返回值2.2闭包3.匿名函数4.装饰器5.偏函数 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 1.高...

u013728021的博客 310

【YOLOv11】087、YOLOv11多任务学习:检测、分割、分类联合学习

摘要: 工业质检场景中,多任务模型(检测、分类、分割)的需求日益增长。针对边缘设备部署的挑战,本文提出基于YOLOv11的多任务学习方案。通过共享主干网络和设计分支头(检测、分割、分类),实现高效推理;采用动态权重平衡策略解决多任务损失不平衡问题;并优化数据流处理(支持部分标注)和推理剪裁(按需启用分支)。实验表明,该方法在Jetson Orin上帧率提升3倍,内存占用减少40%,为工业质检提供了轻量高效的解决方案。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 445

Python自学笔记D4

第四天、函数式编程 在群里看见有几道python基础编程考试题,做起来还是挺困难,先记着,以后要多基于实际进行编程练习! 一、输出所有关键字,随机选其中五个进行大小写转换,最后将其转换成dict,value为它的长度! import keyword import random from random import sample print(len(keyword.kwlist)) L = keyword.kwlist#所有关键字 a = random.sample(L,5)#随机五个 print(a) d

谈笑的博客 292

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【廖雪峰老师python教程】——map/reduce

Map【单个操作对不同单一对象重复进行】 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 返回结果注意转化为list输出;【有点,看起来抽象直观】 >>> def f(x): ... return x * x ... >&g...

A1625014480的博客 339

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python3 函数:map、reduce

map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 例如: def f(x): return x * x r = map(f,[1,2,3,4,5,6,7,8,9]) print(r) print(list(r)) 输出: <map ...

diyudong4681的博客 159

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python3个函数式编程的函数:map、filter和reduce

Python提供了一些有助于进行这种函数式编程的函数:map、filter和reduce。 在较新的Python版本中,函数map和filter的用途并不大,应该使用列表推导来替代它们。你可使用map 将序列的所有元素传递给函数。 1.map list(map(str, range(10))) # 与[str(i) for i in range(10)]等价 2.fliter #(1) 你可使...

weixin_44001521的博客 289

Python3 函数式编程自带函数

一 map函数 引子 需求1:num1=[1,2,3,4],我的需求是把num1中的每个元素平方后组成新列表。 ret = [] num1 = [1,2,3,4] for i in num1: ret.append(i**2) print(ret) # 输出结果: >>>[1, 4, 9, 16] 需求2:如果有1万个列表呢,怎么办? 思路:如果用for循环,当然功能上是没问题的,但是需要写很多重复代码,重复代码?? 顿时想到函数的特性就是避免重复代码,哈哈哈,天才也…

python学习者的博客 241

Python学习笔记四:函数式编程

学习资源:廖雪峰Python教程教程链接点击此处重点记录与c,java有区别的知识点,红色部分重点注意。四、函数式编程函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。由于Python允许使用变量,因此Python不是纯函数式编程语言1.高阶函数(Higher-order function)(1)什么是高阶函数?①变量可以指向函数:f = abs #abs为内置的绝...

a1210090743的博客 575

Python入门之高阶函数map/reduce

1.map()函数函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。eg1:一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下:&gt;&gt;&gt; def f(x): ... return x * x ... ...

WAF 457

Python中的高阶函数reduce

1.reduce(fn,iter) 功能:用fn对iter里面的第一个和第二个元素进行运算,将得到的结果和第三个元素用fn函数运算,最后得到一个结果。 直到序列中的元素全部参与运算 2.工作原理 [a,b,c,d] ———> fn ( fn ( fn ( a,b ) , c ) , d ) 3. 例如: 求一个数字列表中所有元素的和用reduce函数 from functools import reduce list1......

Mogul的博客 1129

python map与reduce

函数式编程之map、reduce 1 定义 map(function, iterable, ...):返回一个迭代器,该迭代器将函数应用于可迭代的每个项目,产生结果。 如果传递了额外的可迭代参数,则函数必须采用多参数且并行应用于所有可迭代项中的项目。 示例: >>> list(map(lambda x: x + 2, list(range(10)))) [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] functools.reduce(function, iterab.

Coder 231

字符串转化为整数

方法一: from functools import reduce DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} def str2int(s): def char2num(s): return DIGITS[s] return reduce(lambda x,y:x...

sxf_123456的博客 529

从 Python到Tensorflow 学习之路(二)

最近毕业设计题目是研究对抗样本,要用tensorflow来搭建神经网络,因此python必不可少,这个不是一个传统的Python学习教程只是把学习Python过程中遇到的问题和经验记录下来(基于Python3.5),如果想要一步一步学习Python建议看下面的网站。 Python学习教程Python中的迭代只要是可迭代对象,无论是否有下标,都可以迭代,例如dict:# -*- coding: ut

无悔王冠的专栏 3254

python3:函数式编程

Python语言的高级特性 函数式编程(FunctionalProgramming) 基于lambda演算的一种编程方式 程序中只有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言: LISP, Haskell Python函数式编程只是借鉴函数式编程的一些特点,可以理解成一半函数式一半Python 本博文包含以下内容: 高阶函数 返回函数 匿名函数 装饰器 偏...

sunshine_lyn的博客 575

reduce

在python2中可以直接用在python3中要导入模块 整体数据进行压缩,合并得到一个最终结果 from functools import reduce reduce(<函数/处理方法>,<可迭代的>,<初始值/可有可无>) from functools import reduce li = [1,2,3] ...

aojila0127的博客 174
上一篇: Python3 学习笔记19_函数式编程_20180308
下一篇: Python3 学习笔记21_函数式编程-高阶函数-filter/sorted_20180312
metears
博客等级 码龄19年 15粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值