Python语法练习_生成器

Posted 陈万君Allen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python语法练习_生成器相关的知识,希望对你有一定的参考价值。

Python语法练习

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天继续和大家分享一下Python语法练习_迭代器
#博学谷IT学习技术支持


`

文章目录


前言

生成器函数和生成器表达式案例


一.生成器函数和生成器表达式案例

练习一

list01 = [3, "54", True, 6, "76", 1.6, False, 3.5]

# 案例需求找出list01中的整数并家1

# 生成器函数
def find_int_iter():
    for item in list01:
        if type(item) == int:
            yield item + 1


iterator = find_int_iter()
for num in iterator:
    print(num)

# 生成器表达式
iterator2 = (item + 1 for item in list01 if type(item) == int)
for num in iterator2:
    print(num)


# 列表推导式
list_result = [item + 1 for item in list01 if type(item) == int]
for num in list_result:
    print(num)

练习二

class SkillData(object):
    def __init__(self, id, name, atk_ration, duration):
        self.id = id
        self.name = name
        self.atk_ration = atk_ration
        self.duration = duration

    def __str__(self):
        return self.name


list_skill = [
    SkillData(101, "乾坤大挪移", 5, 10),
    SkillData(102, "降龙十八掌", 8, 5),
    SkillData(103, "葵花宝典", 10, 2)
]


def iter_find():
    for obj in list_skill:
        if obj.atk_ration > 5:
            yield obj


iterator = iter_find()
for obj in iterator:
    print(obj)

iterator2 = (obj for obj in list_skill if obj.atk_ration > 5)
for obj in iterator2:
    print(obj)


总结

可以看出生成器表达式和列表推导式语法上非常相似,但有本质不同。实际上是生成器函数的简写形式。

以上是关于Python语法练习_生成器的主要内容,如果未能解决你的问题,请参考以下文章

Python语法练习_函数式编程

python_基本语法之变量

Python语法练习_迭代器2

课堂练习-python 生成器并行

挑战Python的语法练习

python开发之路-LuffyCity