7.5-7.6 列表生成式和生成器以及区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.5-7.6 列表生成式和生成器以及区别相关的知识,希望对你有一定的参考价值。
一、列表生成式是 python 受欢迎的语法之一
通过一句简洁的语法就可以对一组元素进行过滤
还可以对得到的元素进行转换处理。
li = [x + x for x in range(1, 101) if x % 2 == 0] print(li) def funa(x): a=[] for x in range(1, 101): if x % 2 == 0: a.append(x+x) return a print(funa(1))
二、列表生成器
1、最简单的办法,把原来的生成式的 [] 换成 () 就 ok 了
lt=(x*x for x in range(1,11) if x%2==0) print(list(lt)) print(type(lt)) for i in lt: print(i)
2、函数中定义列表生成器
def fib(n): sum=0 i=0 while(i<n): sum=sum+i i+=1 yield (sum) print(type(fib(10))) for x in fib(10): print(x) print(type(fib(10)))
生成器和生成式的区别:
1、列表生成式,一次性生成所有的数据,然后保存在内存中,适合小量的数据
2、生成器,返回一个可以迭代的对象,及 ‘generator‘ 对象,必须通过循环才可以一一取出所以的结果
3、可迭代对象,可以通过循环调用出来的,就是可迭代的对象 [] () {} 生成式 生成器
4、迭代器 生成器,必须通过 next() 调用的,被 next() 函数调用并不断返回下一个值得对象称为迭代器
以上是关于7.5-7.6 列表生成式和生成器以及区别的主要内容,如果未能解决你的问题,请参考以下文章