廖雪峰python练习题

函数式编程之高阶函数

map

用map匹配各函数对应参数

>>> def normalize(name):
   Y=name[0].upper()+name[1:].lower()
   return Y

>>> L1=['adam','LiAS']
>>> L2=list(map(normalize,L1))
>>> print(L2)
['Adam', 'Lias']

filter

利用filter特性,输出一个函数,利用此函数判断数值是否为对称结构,比如‘123321’

>>> def symmetry(x):
    s=str(x)
    for i in range(len(s)/2):
        if s[i]==s[-i-1]:
            continue
        return False
    return True

>>> symmetry(123321)
True
>>> output=filter(symmetry,range(1,1000))
>>> print('1~1000:',list(output))
('1~1000:', [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, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999])

当然也可以直接用s[::-1],即将数目倒序

>>> def symmetry(y):
    s=str(y)
    if s==s[::-1]:
        return True
    return False

>>> symmetry(1234)
False
>>> symmetry(123321)
True

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)
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

#按照分数排序
>>> def by_score(t):
    return t[1]
>>> L3=sorted(L,key=by_score)
>>> print(L3)
[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]

匿名函数lambda

>>> L=list(filter(lambda x:x%2==1,range(1,20)))
>>> L
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> L=list(filter(lambda x:x%2,range(1,20)))
#filter特性,过滤false值,传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。0是false,偶数时,余数为0.
>>> L
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 3,779评论 0 7
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,587评论 0 6
  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 5,534评论 6 53
  • 函数式编程 把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: 如果传入abs作...
    绩重KF阅读 565评论 0 0
  • 幸福是不是这样的,听过动人的话,深眠,好梦,第二天一醒,发现梦好现实也好。昨日今天该是这样的时候,可以笑得很大声,...
    牧小善阅读 278评论 2 0