python列表生成式判断_python之列表生成式,生成器,迭代器

列表生成式创建list的生成式;>>>[x * x for x in range(1, 11) if x % 2 == 0]

>>>[4, 16, 36, 64, 100]

>>> [m + n for m in 'ABC' for n in 'XYZ']

>>>['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

生成器一边循环,一边计算,generator;

生成器种类:

(1)列表生成式[]变成();>>> L = [x * x for x in range(10)]

>>> L

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> g = (x * x for x in range(10))

>>> g

at 0x1022ef630>

(2)generator函数 yiled;

generator的函数,每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。def fib(max):

n, a, b = 0, 0, 1

while n < max:

yield b

a, b = b, a + b

n = n + 1

return 'done'

>>> f = fib(6)

>>> f

def odd():

print('step 1')

yield 1

print('step 2')

yield(3)

print('step 3')

yield(5)

调用该generator时,先生成一个generator对象,然后用next()函数不断获得下一个返回值:

>>> o = odd()

>>> next(o)

step 1

1

>>> next(o)

step 2

3

>>> next(o)

step 3

5

>>> next(o)

Traceback (most recent call last):

File "", line 1, in

StopIteration

3. 和列表生成式的区别:列表生成式--直接创建,元素庞大时,容量受限;[]

生成器--边计算边生成,无需创建完整的list,节省空间;()

迭代器可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

可以直接作用于for循环的数据类型有以下几种:A:集合数据类型,如list,tuple,dict,set,str等;

B:generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

可以使用Isinstance()判断一个对象是否为Iterable对象。

3. 生成器都是Iterable对象,但list,tuple,dict,set,str虽Iterable,却不是Iterator。

把list,tuple,dict,set,str等Iterable变成Iterator可以使用iter()函数:

如:iter('abc')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值