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语法练习_生成器的主要内容,如果未能解决你的问题,请参考以下文章