python3—廖雪峰之练习(三)
列表生成式练习
请修改列表生成式,通过添加if语句保证列表生成式能正确执行:
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = []
for x in L1:
if instance(x):
L2.append(x)
print(L2)
map/reduce练习
利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
输入:['adam',‘LISA', 'barT'], 输出:['Adam','Lisa','Bart']:
def normalize(name):
return "%s" % (name[:1].upper() + name[1:])
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)
Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
from functools import reduce
def prod(L):
def product(x, y):
return x * y
return reduce(product, L)
print(prod(L))
利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456:
str2float函数实现转自https://github.com/michaelliao/learnpython3/blob/master/samples/functional
from functools import reduce
CHAR_TO_FLOAT = {
'0': 0,
'1': 1,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9,
'.': -1
}
def str2float(s):
nums = map(lambda ch: CHAR_TO_FLOAT[ch], s)
point = 0
def to_float(f, n):
nonlocal point
if n == -1:
point = 1
return f
if point == 0:
return f * 10 + n
else:
point = point * 10
return f + n / point
return reduce(to_float, nums, 0.0)
print("str2float('\123.456\') = ", str2float('123.456'))
filter练习
回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()滤掉非回数:
def is_palidrome(n):
I, m = n, 0
while I:
m = m*10 + I%10
I = I // 10 #返I的整数部分,抛弃余数
return(n == m)
output = filter(is_palindrome, range(1, 1000))
print(output)
sort()函数练习
假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[0] #返回名字
L2 = sorted(L, key=by_name)
print(L2)
再按成绩从高到低排序:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[1] #返回成绩
L2 = sorted(L, key = by_name, reverse = True)
print(L2)
请编写一个decorator, 能在函数调用的前后打印出'begin call'和'end call'的日志:
转自http://blog.csdn.net/be_your_king/article/details/69938237
import functools
def log(func):
@functools.wraps(func) # wrap '__name__'
def wrapper(*args, **kw):
print("begin call [%s]" % (func.__name__))
func_tmp = func(*args, **kw)
print("end call [%s]" % (func.__name__))
return func_tmp
return wrapper
@log # 借助Python的@语法,把decorator置于函数的定义处
def hello():
print("hello")
hello()
python3—廖雪峰之练习(三)的更多相关文章
- 【学习总结】Git学习-参考廖雪峰老师教程三-创建版本库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- python3—廖雪峰之练习(一)
变量练习 小明的成绩从去年的72分提升到今年的85分,请计算小明成绩提升的百分点.并用 字符串格式化显示出'xx.x%',只保留小数点后一位: s1 = 72 s2 = 85 r = (85-72)/ ...
- python3—廖雪峰之练习(二)
函数的参数练习 请定义一个函数quadratic(a, b, c), 接收3个参数,返回一元二次方程 : $ ax^2+b+c=0 $ 的两个解 提示:计算平方根可以调用math.sqrt()函数: ...
- Python自学笔记-生成器(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...
- Python自学笔记-sorted()函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 排序算法 排序 ...
- Python自学笔记-lambda函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...
- Python自学笔记-filter()函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...
- Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...
- Python自学笔记-列表生成式(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 列表生成式 列 ...
随机推荐
- 算法——得到数据流中前K大的数
用优先队列 public PriorityQueue<Integer> kthLargest(int k, int[]a) { PriorityQueue<Integer> q ...
- AOP 相关包
aop 命名空间,jar 扫路径
- Python抽象类(abc模块)
1.抽象类概念 抽象类是一个特殊的类,只能被继承,不能实例化 2.为什么要有抽象类 其实在未接触抽象类概念时,我们可以构造香蕉.苹果.梨之类的类,然后让它们继承水果这个基类,水果的基类包含一个eat函 ...
- udp拼接传递数据包
1.拼接项少 pl = ["<0112>","<32>","<1024x768>","< ...
- ICPC — International Collegiate Programming Contest Asia Regional Contest, Yokohama, 2018–12–09 题解
目录 注意!!此题解存在大量假算法,请各位巨佬明辨! Problem A Digits Are Not Just Characters 题面 题意 思路 代码 Problem B Arithmetic ...
- 在cmd上执行关于java的反编译
反编译是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析.研究”工作,以推导出他人的软件产品所使用的思路.原理.结构.算法.处理过程.运行方法等设计要素,某些特定情况下可能推导出源代码.反编 ...
- D5000系统使用手册--AVC
有关概念: AVC:自动电压控制 PAS:网络分析应用 SCADA:电网稳态监控应用 闭环:AVC由SCADA系统获得电网的实时运行状态,分析计算后发出控制指令,电网运行状态变化后反馈回AVC,形成闭 ...
- R中rep函数的使用
官方帮助文档如下写的: Usage rep(x, ...) rep.int(x, times) rep_len(x, length.out) Arguments x a vector (of any ...
- springboot学习日志(二)-- thymeleaf学习
本次学习如何使用thymeleaf以及相关语法1.在上一章写的那样 引入jar包到maven工程 <dependency> <groupId>org.springframewo ...
- spring 中的一些注解功能--不定更新
1@Qualifier注解? 下面的示例将会在Customer的person属性中自动装配Person的值. public class Customer { @Autowired private Pe ...