Python——高级特性

可迭代
iterable

遍历:按顺序读取,能遍历的就可迭代
这里写图片描述

In[59]: from collections import Iterable
In[60]: isinstance("cba", Iterable)
Out[60]: True
In[61]: isinstance(120, Iterable)
Out[61]: False
In[62]: isinstance(list(), Iterable)
Out[62]: True
In[63]: isinstance(dict(), Iterable)
Out[63]: True
In[64]: isinstance(set(), Iterable)
Out[64]: True

列表生成式:[]
这里写图片描述

In[67]: [i**2 for i in range(1,11)]
Out[67]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
In[68]: [i**2 for i in range(1,11) if (i**2)%2==0]
Out[68]: [4, 16, 36, 64, 100]
In[69]: [i+j for i in 'abc' for j in '123']
Out[69]: ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

生成器
生成列表需要时间[i**2 for i in range(10000000)]
如果要生成大量元素,会受到系统内存显示,这是需要用生成器
生成器的元素根据某种算法推算,当年你需要是用next方法生成,可以节省大量内存空间

Fibonacci数列;
1,1,2,3,5,8……

这里写图片描述

def yie():
    print "1"
    yield "111‘
    print "2"
    yield
g = yie()
g.next()
print g.next()

如果函数里面有yield关键字,那么调用这个函数的结果付给的变量为生成器;
当生成器g调用第一个next方法时,会运行函数,知道i遇到第一个以yield的停止;
当调用第二个next方法时,会从停止的地方继续执行,知道遇到下一个yield;

生成器的send方法
使用send方法给生成器函数发送数据;
使用send方法前,必须先调用一次next()方法;
遇到下一个yield停止;
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值