美文网首页
廖雪峰python练习题

廖雪峰python练习题

作者: 带好我的包 | 来源:发表于2018-01-26 14:34 被阅读0次

函数式编程之高阶函数

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]

相关文章

网友评论

      本文标题:廖雪峰python练习题

      本文链接:https://www.haomeiwen.com/subject/iwuiaxtx.html