# Python 函数式编程练习

  1. 利用map函数,将字符串列表的前后空格包括换行去掉。
# [' Web 和 Internet开发', '     科学计算和统计\n ', '教育 ', '\t桌面界面开发', '软件开发', '后端开发']
arr=[' Web 和 Internet开发',  '     科学计算和统计\n ', '教育 ', '\t桌面界面开发', '软件开发',     '后端开发']
arr1=[]
for x in arr:
    x1=x.replace('\n','')
    if x1!='':
        arr1.append(x1)
data=map(lambda s:(s.strip(" ")),arr1)
print(list(data))
  1. 利用reduce函数对1-10的奇数求和
from time import sleep
from functools import reduce
arr=[]
for z in range(1, 10):
    if z % 2 != 0:
        arr.append(z)
def sum(x,y):
    return x+y
print(arr)
print("sum=")
print(reduce(sum,arr))
  1. 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出500以内回数
def show(n):
    num=str(n)
    return  num==num[::-1]
print(list(filter(show,range(1,500))))
  1. 用一组tuple表示学生名字和成绩:arr = [(‘Bob’, 75), (‘Adam’, 92), (‘Bart’, 66), (‘Lisa’, 88)], 用sort函数用名字排序列表(提示:key用lambda表达式)
arr = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def byname(arr):
    return arr[0]
def byscore(arr):
    return arr[1]
print(sorted(arr,key=lambda x:arr[0]))
print(sorted(arr,key=byname))
print(sorted(arr,key=byscore))
  1. 闭包
def count():
    funcs = []
    for i in range(1, 4):
        def f(param=i):
            return lambda :param
        funcs.append(f)
    return funcs
f1 = count()[0]
f2 = count()[1]
f3 = count()[2]
print(f1()(), f2()(), f3()())
  1. 使用yield完成文件的逐行读取。
def readfile(filenaem):
    with open('one.txt') as reader:
        line=reader.readline()
        while line:
            yield line
            line=reader.readline()
read=readfile('one.txt')
print(read)
print(next(read))
print(list(read))
  1. 写一个装饰器,在函数执行前后分别打印出函数的开始、函数的结束和总耗时。(可用sleep(x) 来模拟执行时间)
def war1(func):
    def inner():
        print("war1开始")
        sleep(2)
        func()
        print("war1结束")
        sleep(1)
    return inner
def war2(func):
    def inner():
        print("war2开始")
        sleep(4)
        func()
        print("war2结束")
        sleep(2)
    return inner
@war1
@war2
def f():
    print("****self****")
f()
  1. 创建一个时间类Date,里面有三个参数(year, month, day)利用装饰器方法 @staticmethod
    建立一个静态函数today(),返回一个包含今天时间的Date对象
class Date(object):
    day=0
    month=0
    year=0
    def __init__(self,year=0,month=0,day=0):
        self.day=day
        self.month=month
        self.year=year
    @staticmethod
    def out_date(self):
        print('静态方法out_date展示的时间为年-月-日为:')
        print(self.year,self.month,self.day)
    @staticmethod
    def show(self):
        print('show方法展示的时间为')
        print(self.year,self.month,self.day)
        return object
t=Date(2016,8,1)
Date.show(t)
Date.out_date(t)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值