Python-生成式和生成器(通俗易懂)

在·# 1.生成式

1)列表生成式

在这里插入图片描述
生成100个随机验证码:
在这里插入图片描述
通过列表生成式简化:

import random
import string
codes = [''.join(random.sample(string.ascii_letters,4)) for i in range(100)]
print(codes)

执行结果如下:
在这里插入图片描述
找出1-100之间可以被3整除的数:

nums = []
for num in range(1,101):
    if num % 3 == 0:
        nums.append(num)
print(nums)
## 通过列表生成式优化:
nums = [num for num in range(1,101) if num % 3 == 0]
print(nums)

2)集合生成式

和列表生成式类似
可以对代码进行优化

Set = { i**2 for i in range(100)}
print(Set)

结果如下:
在这里插入图片描述

3)字典生成式

## 冒号前的是key值,后面是value值
Dict = {i:i**2 for i in range(10)}
print(Dict)

执行结果如下:
在这里插入图片描述

2. 生成器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1)第一种实现方法

#生成器实现的第一种方法:将生成式改写成生成器
nums = (i**2 for i in range(1000))
for num in nums:
    print(num)

2)第二种实现的方法

# 生成器实现的第二种方法:yield关键字
# return:函数遇到return就返回,return后面的代码不会执行
# yield:遇到yield停止执行代码,当再次调用next方法时,会从上次停止的地方继续执行,遇到yield停止,依此类推。
nums = (i**2 for i in range(1000))
def login():
    print('step 1')
    yield 1
    print('step 2')
    yield 2
    print('step 3')
    yield 3 
# 如果函数里有yield关键字,函数的返回值就是一个生成器。
g = login()
print(next(g))
print(next(g))
print(next(g))

执行结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值