一、列表生成式是 python 受欢迎的语法之一
通过一句简洁的语法就可以对一组元素进行过滤
还可以对得到的元素进行转换处理。
1
2
3
4
5
6
7
8
9
10
|
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 了
1
2
3
4
5
|
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、函数中定义列表生成器
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
x
in
fib(
10
):
print
(x)
print
(
type
(fib(
10
)))
|
生成器和生成式的区别:
1、列表生成式,一次性生成所有的数据,然后保存在内存中,适合小量的数据
2、生成器,返回一个可以迭代的对象,及 'generator' 对象,必须通过循环才可以一一取出所以的结果
3、可迭代对象,可以通过循环调用出来的,就是可迭代的对象 [] () {} 生成式 生成器
4、迭代器 生成器,必须通过 next() 调用的,被 next() 函数调用并不断返回下一个值得对象称为迭代器
本文转自 归来仍少年 51CTO博客,原文链接:http://blog.51cto.com/shaoniana/1980559