阶段01基础篇_D09_生成器generator|阶段01基础篇_D09_生成器generator 迭代器iterator 列表推导式

生成器generator 迭代器 iterator 列表推导式
生成器 generator

  • 生成器与迭代器是一种,生成器的本质就是迭代器,唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是python提供的,或者转化得来的。
  • 一个包含yield关键字的函数就是一个生成器函数
  • 并且yield不能和return共用,并且yield只能用在函数内。
  • 生成器Demo:
    import time def generator_demo(n): "这个函数在每次循环时都会产生一个值,之后将其返还给它的调用者。" "有yield的函数称为生成器,这个函数就是生成器函数" for i in range(1, n+1): yield f"{i} square = {[i**2]}"g = generator_demo(10000)# 创建生成器对象 print(g)# # 在一个for循环中时,在循环中每一次完成函数的yield语句后,控制权都会返还给函数 for i in g: print(i) time.sleep(1)

迭代器 iterator
  • 迭代是访问集合元素的一种方式;
  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
  • 迭代器有两个基本的函数iter() 和 next()
  • 字符串,列表,元组对象都可以用于创建迭代器:
list = [1, 2, 3, 4] it = iter(list) print(next(it))# 1 print(next(it))# 2

  • 迭代器对象可以用for遍历:
list = [1, 2, 3, 4] it = iter(list) for i in it: print(i, end=" ")# 1 2 3 4

  • 也可以使用next()函数:
import sys list = [1, 2, 3, 4] it = iter(list) while True: try: print(next(it)) except StopIteration: sys.exit()

?
列表推导式
  • 描述:
    • 是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
  • 共有三种推导式:
    • 列表(list)推导式
      l1 = [i for i in range(11) if i % 3 == 0] print(l1)# [0, 3, 6, 9]l2 = [i for i in range(1, 11)] print(l2)# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]l3 = [i**2 for i in range(1, 7)] print(l3)# [1, 4, 9, 16, 25, 36]

  • 字典(dict)推导式
    d = {v.lower(): k.upper() for k, v in dict.items()} print(d)# {'apple': 'A', 'button': 'B'}

  • 【阶段01基础篇_D09_生成器generator|阶段01基础篇_D09_生成器generator 迭代器iterator 列表推导式】列表(set)推导式
    s1 = {i+i for i in "python"} print(s1)# {'tt', 'pp', 'yy', 'hh', 'oo', 'nn'}

    推荐阅读