博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python函数式编程—高阶函数练习题
阅读量:4125 次
发布时间:2019-05-25

本文共 1890 字,大约阅读时间需要 6 分钟。

俗话说:光说不练假把式……学而不思则罔……近来在跟着廖雪峰前辈的python教程学习,做一些题目练习一下

一、python高阶函数

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

#函数代码def  standards(s):    t='0'    t=s.lower()  #将s全部小写    t=t.capitalize() #将t首字母大写    print(t)
#测试代码list(map(standards,['adam','LISA','barT']))

备注:这里运用了map函数,map函数的两个输入参数分别是用到的函数和处理的序列,map函数在处理序列方面极为方便。

2.回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数

def equal(a,b):  #判断两个字母是否相等    return a==bdef is_palindrome(n):   #判断是否是回数    i=0    s=str(n)            #把数字转化为字符串    for i in range(len(s)-1):   #逐位比较是否相等        if equal(s[i],s[len(s)-i-1]):            continue        else:            return False   #一旦出现不相等,返回False    return True   #如果全部相等,返回True#测试代码output = filter(is_palindrome, range(1, 1000))print('1~1000:', list(output))if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:    print('测试成功!')else:    print('测试失败!')

备注 :

Python内建的filter()函数用于过滤序列,filter()接收一个函数和一个序列。filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

3.练习:假设我们用一组tuple表示学生名字和成绩:L = [(‘Bob’, 75), (‘Adam’, 92), (‘Bart’, 66), (‘Lisa’, 88)]请用sorted()对上述列表分别按名字排序:

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_name(t):     t=sorted(t[0], key=str.lower)     return tL2 = sorted(L, key=by_name)print(L2)#运行结果[('Adam', 92), ('Bob', 75), ('Bart', 66), ('Lisa', 88)]

再按成绩从高到低排序:

L = [(‘Bob’, 75), (‘Adam’, 92), (‘Bart’, 66), (‘Lisa’, 88)]

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_score(t):     t=sorted(range(t[1]),key=abs)     #这里不能直接用t[1],t[1]是int型,会报错TypeError: 'int' object is not iterable,需加range()进行迭代     return tL2 = sorted(L, key=by_score)print(L2)#运行结果[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]

备注:sorted()函数可以用于排序,可以通过设置key参数实现自定义的排序。用sorted()排序的关键在于实现一个映射函数。

转载地址:http://dhqpi.baihongyu.com/

你可能感兴趣的文章
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
苏宁产品经理面经
查看>>
百度产品经理群面
查看>>
去哪儿一面+平安科技二面+hr面+贝贝一面+二面产品面经
查看>>
element ui 弹窗在IE11中关闭时闪现问题修复
查看>>
vue 遍历对象并动态绑定在下拉列表中
查看>>
Vue动态生成el-checkbox点击无法选中的解决方法
查看>>
python __future__
查看>>
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(三)
查看>>