python基础 day13 生成器,列表推导式、生成器表达式

一、今日内容大纲
1、生成器 :生成器的本质就是迭代器
获取生成器的三种方式
生成器函数:
#生成器
def func():
print(1)
print(2)
yield 3
yield 4
ret = func()
print(next(ret))
print("_________")
print(next(ret))
# print(next(ret))
"""
一个next 对应一个yield,当next比yield多时,报错
"""
return与yield区别:
return:一个函数中只存在一个return,,并且当遇到return时,就结束函数,并且给函数的执行者返回值
yield:只要函数中有yield,那么它就是生成器函数,生成器函数中可以存在多个yield,一个yield对应一个next
生成器表达式
python内部提供的一些
yield
yield return
yield from
生成器表达式

2、生成器表达式,列表推导式
列表推导式:用一行代码构建一个比较复杂有规律的列表
l1 = [i for i in range(1,11,2)]
两种模式: 循环模式:{变量(加工后) for 变量 in interable}
筛选模式:{变量(加工后) for 变量 in interable if 条件}
生成器表达式:
"""
生成器表达式
与列表推导式写法几乎一摸一样,有筛选模式和循环模式,写法上面只有一个不同
[]——》()
"""
# print([i**2 for i in range(1,11)]) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# print((i for i in range(1,11))) #<generator object <genexpr> at 0x000001E12F7D2360>
# obj = (i for i in range(1,11))
# for i in range(1,11):
# print(next(obj))
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]
l2 = [i for i in range(2,11)] + list("JQKA")
print(l2)
print( [i for i in range(2,11)]+["J", "Q", "K", "A"])

"""
字典推导式
"""
lst1 = ['测试','笨蛋','混蛋']
lst2 = ['xixi','haha','bend']
dic = {lst1[i] : lst2[i] for i in range(len(lst1))}
print(dic)
"""
集合推导式
"""
print({i for i in range(1,100)})
3、内置函数 |

posted @ 2020-12-26 13:48  小鱼鱼与黄黄  阅读(60)  评论(0编辑  收藏  举报