day13——Python列表生成式和生成器

本文介绍了Python中的列表生成式和生成器的基本概念及使用方法,并对比了两者的不同之处。通过具体示例展示了如何利用列表生成式快速生成包含特定条件的列表,以及如何使用生成器来创建迭代器对象,节省内存资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    列表生成式是Python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换算下。语法格式为:
#列表生成式
#求偶数的平方
li = [x*x for x in xrange(1,101) if x%2 == 0]
print(li)
 
print('#'*50)
#列表生成器
#1.最简单的就去,把原来的生成式的[]换成()就ok了
lt = (x*x for x in xrange(1,101) if x%2 == 0)
print(lt)
print('#'*50)
print(type(lt))
print('#'*50)
for i in lt:
print(i),
 
#2.函数中定义列表生成器
print('#'*50)
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)
 
打印结果为:
[4, 16, 36, 64, 100, 144, 196, 256, 324, 400, 484, 576, 676, 784, 900, 1024, 1156, 1296, 1444, 1600, 1764, 1936, 2116, 2304, 2500, 2704, 2916, 3136, 3364, 3600, 3844, 4096, 4356, 4624, 4900, 5184, 5476, 5776, 6084, 6400, 6724, 7056, 7396, 7744, 8100, 8464, 8836, 9216, 9604, 10000]
##################################################
<generator object <genexpr> at 0x000000000220E2D0>
##################################################
<type 'generator'>
##################################################
4 16 36 64 100 144 196 256 324 400 484 576 676 784 900 1024 1156 1296 1444 1600 1764 1936 2116 2304 2500 2704 2916 3136 3364 3600 3844 4096 4356 4624 4900 5184 5476 5776 6084 6400 6724 7056 7396 7744 8100 8464 8836 9216 9604 10000 ##################################################
<type 'generator'>
 
 
 
生成器和生成式的区别:
 
#生成式:一次性生成所有的数据,然后保存在内存中,适合小量的数据
#生成器:返回一个可以迭代的对象,及'generator'对象,必须通过循环才可以一一去取所有的结果
#可迭代对象:可以通过循环调用出来的,就是可迭代的对象,如:[]、()、{}、生成式
#迭代器:可以简单理解成生成器,必须通过next()函数调用的,被next()函数调用并不断返回下一个值的对象称为迭代器
 
 
1 for i in xrange(1,10):
2     for j in xrange(1,i+1):
3         print "%s*%s = %s" %(j,i,j*i),
4     print

 

 

转载于:https://www.cnblogs.com/yangjinbiao/p/7781066.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值