python-廖雪峰,map/reduce学习笔记
# _*_ coding:utf-8 _*_
from functools import reduce
def str2int(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} #定义一个字典
def f(x, y):
return x *10 + y # 返回值 def char2num(s):
return digits[s] # 函数接收key,返回值是字典里对应的value,如:如果s == '1', 则返回值是 1 return reduce(f, map(char2num, s)) print(str2int('12345'))
==》12345 #输入的s是str,输出的是int 解析:
1、 map(char2num, '12345')将得到一个生产器,这个生成器生成的值【1, 2, 3, 4, 5】
2、reduce(f, [1, 2, 3, 4, 5]
==>(((1*10+2)*10+3)*10+4)*10+5=12345 用lambda函数来实现:
# _*_ coding:utf-8 _*_
from functools import reduce def str2int(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} #定义一个字典 def char2mun(s):
return digits[s] # 函数接收key,返回值是对应的value return reduce(lambda x, y: x * 10 + y, map(char2mun, s)) print(str2int('668'))==》668
作业:
1、利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:
我自己写的:
def normalize(name):
s = name.lower()
s1 = s[0].upper()
i = 1
while i < len(s):
s1 = s1 + s[i]
i += 1
return s1 别人写的(膜拜,能用一行代码搞定的,不要用两行):
def normalized2(name):
return name[0].upper() + name[1:].lower()
2、 Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
我写的:
def prod(L):
def multiple(x, y):
return x * y
return(reduce(multiple, L)) 别人写的(总是能写的比我好太多,我就没有想到):
def prod(L):
return reduce(lambda x, y:x*y,L)
3. 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:
# coding=utf-8
from functools import reduce def str2float(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} #定义字典 def str2num(s):
return digits[s] #提取字典的值 str1 = s.split('.')[0] #获取整数部分字符串
str2 = s.split('.')[1] #获取小数部分字符串
flo1 = reduce(lambda x, y: x * 10 + y, map(str2num, str1))
flo2 = reduce(lambda x, y: x * 10 + y, map(str2num, str2))/10**len(str2)
return flo1 + flo2 print('str2float(\'123.456\')= ', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.0001:
print('pass')
else:
print('failed')
python-廖雪峰,map/reduce学习笔记的更多相关文章
- 廖雪峰 Git教程学习笔记 原文 http://www.liaoxuefeng.com/
一 .集中式与分布式 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推 ...
- 廖雪峰git教程学习笔记3
commit是一串不便记忆的数字,为了方便记忆,引入tag,tag就跟HEAD一样,就像一个指针,指向commit,且指向是不能变得,一个commit就有一个tag 给当前分支下的当前commit打上 ...
- 廖雪峰git教程学习笔记2
本地git仓库和github仓库之间的传输是通过SSH加密的,所以: 注册GitHub账号 创建SSH key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id ...
- 廖雪峰git教程学习笔记
对git来说,没有消息就是最好的消息 使用 git init 把当前目录变为git仓库 要在仓库里加入文件,先在仓库目录新建这个文件后,比如新建一个文件xiaobai.txt,内容为: 在命令行里输入 ...
- Git-第五篇廖雪峰Git教程学习笔记(4)分支
1.一开始,只有一个主分支(master),HEAD指向Master,而Master指向主分支.现在我们创建dev分支. lfy@lfy-PC MINGW64 /c/fyliu/lfyTemp/git ...
- Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
1.本次连接的是gitHub仓库. 1>创建SSH Key. ssh-keygen -t rsa -C "youremail@example.com" lfy@lfy-PC ...
- Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
1.工作区 C:\fyliu\lfyTemp\gitLocalRepository\yangjie 2.版本库 我们使用git init命令创建的.git就是我们的版本库.Git的版本库里存了很多东西 ...
- Git-第二篇廖雪峰Git教程学习笔记(1)基本命令,版本回退
1.安装Git-2.16.2-64-bit.exe后,设置用户名,用户邮箱 #--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地 ...
- 廖雪峰的git学习笔记
安装完后,每个机器都要自报家门 Config--配置 global--全局参数 配置全局用户名 $git config --global user.name “Your Name” 配置邮箱 ...
随机推荐
- pragma comment的使用 pragma预处理指令详解
pragma comment的使用 pragma预处理指令详解 #pragma comment( comment-type [,"commentstring"] ) 该宏放置一 ...
- cookie的参数
def set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, ...
- maven 打包前 Junit 测试
1. 在需要打包前测试的项目中添加依赖 <dependency> <groupId>junit</groupId> <artifactId>junit& ...
- Java 容器
摘录来至https://www.cnblogs.com/LipeiNet/p/5888513.html https://www.cnblogs.com/acm-bingzi/p/javaMap.htm ...
- WebService的一种简单应用方式入门
1.什么是WebService? WebService即Web服务,简单来讲,他就是一种跨编程语言和跨操作平台的远程调用技术. 2.Web服务: Web服务是基于HTTP和XML的技术:HTTP是互联 ...
- python里的函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 假设用户输入的英文名字不规范, ...
- css引入外部字体使网站字体更美观
@font-face{font-family: myFont;src:url("../font/timesi.ttf");src:url("../font/timesbi ...
- logging 模块 五星知识
logging 是用来记录日志的,有下面5种模式,它和print功能一样,只不过,print不能控制自己打印的内容,而logging可以控制,你想打印什么东西. logging 有两种形式: 第一种: ...
- Spring Boot 揭秘与实战(二) 数据存储篇 - Redis
文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用 redisTemplate 操作4. 总结 3.1. 工具类 ...
- 【转载】 详解BN(Batch Normalization)算法
原文地址: http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce ------------------------------- ...