python的推导式、生成器、迭代器总结

想想自己的初衷,自己现在在做什么,未来又会怎样

——杰

在python的进阶中,推导式、生成器、迭代器都是非常重要的一部分内容。小编经过一段时间的学习,发现这三者之间存在着很密切的联系。

推导式:

常见的是列表推导式:

【表达式 for 变量 in 列表】

比如:

x=[i for i in list[1,2,3,4,5]]

等同于

x=[]
for i in list[1,2,3,4]
        x.append(i)

推导式,很大程度上,展现出来python的简单、优美的特点。就是一句话,顶得上,其他语言得好几句。
列表推导式,可以分为如下两种:
(1)if–else

x=[i+1 if i %2 ==0 else i+2 for i in [1,2,3,4,5,6,7,8,9]]
print(x)
[3, 3, 5, 5, 7, 7, 9, 9, 11]

(2)if


x=[i+1 for i in [1,2,3,4,5,6,7,8,9] if i %2 ==0 ]
print(x)
[3, 5, 7, 9]

此外还有集合推导式、字典推导式
集合推导式,和列表推导式,几乎一样,区别在于,集合不允许重复。
字典推导式,在形式上和列表推导式的不同,就是如下

{key ,value for k,v in dict.item}

生成器

生成器的存在,是为了避免内存空间的大量浪费,不会一次性把内存分配完,而是根据需要,逐步生成
第一种,就是把列表生成式的【】,换成(),就行了

x=(i+1 for i in [1,2,3,4,5,6,7,8,9])
print(type(x))
<class 'generator'>

第二种,就是利用yield,这个在复杂的函数中,经常使用。只要见到yield函数,可以直接判断,是生成器。

def x():
    while True:
        print(3)
        yield

该生成器,如何使用呢!
这边我们需要用到next()和_next_(),来调用。每调用一次,yield就暂停,并抛出一个字。

def x():
    while True:
        print(3)
        yield

print(next(x()))
print(x().__next__())
3
None
3
None

迭代器

生成器,天生是迭代器。迭代器的定义,就是可以用next()函数来调用,并返回一个函数值。
列表、字符串等是可迭代,但是并不是迭代器。是否可迭代,需要借助isinstance(f,Iterable)来判断。
要生成迭代器,可以借助iter函数来生成。

iter(list)

即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值