python中的生成器generator、yield

一、什么是生成器,他的作用是什么

在Python中,生成器(Generator)是一种特殊类型的函数,它可以用于迭代(iteration)操作。

生成器函数使用关键字yield而不是return来返回值,这使得它能够在每次迭代时产生一个值,并在下一次迭代时继续执行。生成器在每次迭代中只计算并返回一个值,这样可以有效地节省内存空间。

生成器函数的结构类似于普通函数,但其特点是在执行过程中会暂停并保存当前的状态,等待下一次迭代时继续执行。生成器可以通过yield语句返回一个值,并且可以使用for循环或者next()函数来迭代生成器中的值。

二、创建生成器的方式

  • 通过 生成器表达式
  • 通过 生成器函数

1、通过生成器表达式

# 生成器表达式
generator = (x * x for x in range(5))
print(generator)
for i in generator:    # 通过 for循环迭代生成器
    print(i)
# 请区分列表表达式语句
theList = [x * x for x in range(5)]
print(theList)

运行结果如下:

 2、通过生成器函数

# 定义一个生成器函数
def square_numbers(nums: list[int]):
    for i in nums:
        yield i * i

nums = [1,2,3,4,5]
new_nums = square_numbers(nums)
print(new_nums)
print(type(new_nums))
print(list(new_nums))   # 将生成器转换为列表

运行结果:

 通过next迭代生成器

# 定义一个生成器函数
def square_numbers(nums: list[int]):
    for i in nums:
        yield i * i

nums = [1,2,3,4,5]
new_nums = square_numbers(nums)
print(next(new_nums))
print(next(new_nums))
print(next(new_nums))
print(next(new_nums))
print(next(new_nums))
print(next(new_nums))

运行结果

 

posted @ 2024-05-28 22:04  远洪  阅读(24)  评论(0)    收藏  举报