Python-17_函数式编程

练习:定义学生类,分别使用生成器函数/生成器表达式/列表推导式实现。
-- 计算所有年龄大于25的学生。
-- 计算所有成绩大于60的学生。
-- 计算所有成绩大于90的学生。

"""
    生成器
        -- 生成器函数
        def 函数:
            ..
            yield 数据
            ..

        for item in 函数():
            语句
        -- 生成器表达式
          (表达式 for 变量 in 可迭代对象)
"""
# 练习:定义学生类,分别使用生成器函数/生成器表达式/列表推导式实现。
# -- 计算所有年龄大于25的学生。
# -- 计算所有成绩大于60的学生。
# -- 计算所有成绩大于90的学生。

class StudentModel:
    def __init__(self, id=0, name="", age=0, score=0):
        self.id = id
        self.name = name
        self.age = age
        self.score = score

    def __repr__(self):
        return "StudentModel(%d,'%s',%d,%d)"%(self.id,self.name,self.age,self.score)


studs = [
    StudentModel(101,"z01",18,85),
    StudentModel(102,"z02",26,55),
    StudentModel(103,"z03",27,75),
    StudentModel(104,"z04",35,90),
]
# -- 计算所有年龄大于25的学生。
# 传统方式实现
# def get_students01(list_stu):
#     result = []
#     for item in list_stu:
#         if item.age > 25:
#             result.append(item)
#     return result
#
# re01 = get_students01(studs)
# for item in re01:
#     print(item)

# 生成器函数实现
# def get_students01(list_stu):
#     for item in list_stu:
#         if item.age > 25:
#             yield item
# re01 = get_students01(studs)

# for item in re01:
#     print(item)

# 列表推导式实现
# re01 = [item for item in studs if item.age > 25]
# for item in re01:
#     print(item)

# 生成器表达式实现
# re01 = (item for item in studs if item.age > 25)
# for item in re01:
#     print(item)

#------------------以下为封装思想------------------------
# def get_students01(list_stu):
#     for item in list_stu:
#         if item.age > 25:
#             yield item

# def get_students02(list_stu):
#     for item in list_stu:
#         if item.score > 60:
#             yield item

# def get_students03(list_stu):
#     for item in list_stu:
#         if item.score < 90:
#         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值