当前位置:首页>python>python生成器、推导式、迭代器

python生成器、推导式、迭代器

  • 2026-10-11 05:44:18
python生成器、推导式、迭代器

生成器

  • 它能够按需生成值,而不是一次性生成所有值。与列表、元组等容器类型的可迭代对象不同,生成器不会将所有数据存储在内存中,而是在每次请求时"即时"生成数据。

  • 生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器

  • 是特殊的迭代器,遵循迭代器协议 使用yield语句生成值并暂停执行 函数状态会被保存,下次调用时从暂停处继续 每次调用只提供一个数据 不能"回头"访问已生成的值 支持next()函数调用 不支持下标索引访问 惰性计算,按需生成数。

def generatorFun():    yield 1    yield 2    yield 3ger =  generatorFun()   print(next(ger))print(next(ger))print(next(ger))try:    print(next(ger))except StopIteration:     print("生成器已耗尽")
123生成器已耗尽
def countUp(max):    count = 1    while count <= max:        yield count        count+=1for num in countUp(5):    print(num)       
12345
生成器表达式
genExpr = (x ** 2 for x in range(4))
# 生成器使用方法 - forfor i in genExpr:    print(i, end=' ')0 1 4 9 

Python 推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 推导式是一种强大且简洁的语法,适用于生成列表、字典、集合和生成器。

列表推导式
 names = ['Bob','Tom','alice','Jerry','Wendy','Smith'] new_names = [name.upper()for name in names if len(name)>3] print(new_names)['ALICE', 'JERRY', 'WENDY', 'SMITH']
字典推导式
dic = {x: x**2 for x in (2, 4, 6)} dic{2: 4, 4: 16, 6: 36}
集合推导式
 a = {x for x in 'abracadabra' if x not in 'abc'} a{'d', 'r'} type(a)<class 'set'>
元组推导式
 a = (x for x in range(1,10)) a<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象 tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组(1, 2, 3, 4, 5, 6, 7, 8, 9)

迭代器

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

字符串,列表或元组对象都可用于创建迭代器。

list=[1,2,3,4]it = iter(list)    # 创建迭代器对象for x in it:    print (x, end=" ")

最新文章

随机文章