7.5-7.6 列表生成式和生成器以及区别

简介:

一、列表生成式是 python 受欢迎的语法之一

通过一句简洁的语法就可以对一组元素进行过滤

还可以对得到的元素进行转换处理。

1
2
3
4
5
6
7
8
9
10
li  =  [x  +  for  in  range ( 1 101 if  %  2  = =  0 ]
print (li)
 
def  funa(x):
     a = []
     for  in  range ( 1 101 ):
         if  %  2  = =  0 :
             a.append(x + x)
     return  a
print (funa( 1 ))


二、列表生成器

1、最简单的办法,把原来的生成式的 [] 换成 () 就 ok 了

1
2
3
4
5
lt = (x * for  in  range ( 1 , 11 if  x % 2 = = 0 )
print ( list (lt))
print ( type (lt))
for  in  lt:
     print (i)


2、函数中定义列表生成器

1
2
3
4
5
6
7
8
9
10
11
def  fib(n):
     sum = 0
     i = 0
     while (i<n):
         sum = sum + i
         i + = 1
         yield  ( sum )
print ( type (fib( 10 )))
for  in  fib( 10 ):
     print (x)
print ( type (fib( 10 )))


生成器和生成式的区别:

1、列表生成式,一次性生成所有的数据,然后保存在内存中,适合小量的数据

2、生成器,返回一个可以迭代的对象,及 'generator' 对象,必须通过循环才可以一一取出所以的结果

3、可迭代对象,可以通过循环调用出来的,就是可迭代的对象 [] () {} 生成式 生成器

4、迭代器  生成器,必须通过 next() 调用的,被 next() 函数调用并不断返回下一个值得对象称为迭代器



 本文转自 归来仍少年 51CTO博客,原文链接:http://blog.51cto.com/shaoniana/1980559

相关文章
使用推导式和生成器创建数组
使用推导式和生成器可以便捷创建数组。例如,`[n^2 for n in 1:10]` 生成一个包含平方数的向量,而 `[n*m for n in 1:10, m in 1:10]` 创建一个乘积矩阵。无括号形式如 `n^2 for n in 1:5` 产生生成器,需要 `collect` 转换为数组。另外,表达式 `sum(1/n^2 for n=1:1000)` 求和而不占用大量内存。
|
11天前
|
运维 Shell Sentinel
第八章 Python可迭代对象、迭代器和生成器
第八章 Python可迭代对象、迭代器和生成器
|
10月前
|
JavaScript 前端开发
迭代器和生成器
在JavaScript中,迭代器(`Iterator`)是一个对象,用于在可迭代的数据结构中遍历和访问每个元素,而不必暴露该数据结构的内部结构。
|
12月前
|
Python
生成器和迭代器
生成器和迭代器
41 0
|
存储 Python 容器
理解 Python 迭代对象、迭代器、生成器
理解 Python 迭代对象、迭代器、生成器
110 0
|
JavaScript 前端开发
迭代器、生成器
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解JavaScript中的迭代器、生成器
74 0
|
存储 算法 Python
【Python】(八)列表生成式、迭代器、生成器、装饰器1
【Python】(八)列表生成式、迭代器、生成器、装饰器1
142 0
|
设计模式 Python
【Python】(八)列表生成式、迭代器、生成器、装饰器2
【Python】(八)列表生成式、迭代器、生成器、装饰器2
92 0
|
Java 索引 Python
python中的迭代对象、迭代器、生成器
在python中对于list和tuple,有很多的方式得到里面的元素,如果要输出里面的所有元素,可以采用for循环的形式,得到list或tuple中的每个元素,这就是迭代,凡是能够进行for循环的对象就是可迭代对象。 在java中的迭代方式有两种,一种直接for循环,一种采用迭代器 for循环的使用:
98 0
python中的迭代对象、迭代器、生成器