py高级特性2.0
2017-05-13 本文已影响2人
小灰灰233
一、列表生成式
py内置用来创建list的生成式
list(range(1,11))
[xx for x in range(1,11)]
形式+范围
[xx for x in range(1,11) if x % 2==0]
形式+范围+限定
[m+n for m in 'abc' for n in 'xyz']
两层循环,全排列'ax'
列出所有文件和目录名
[d for d in os.listdir('.')]
可以同时迭代key and value
for k,v in d.items():
直接生成list
[k+'='+v for k,v in d.items()]
字母变成小写
[s.lower() for s in l]
二、生成器:generator
将列表元素按照某种算法算出来,在循环中不断推算出后续元素
不必建立完整list,节省大量空间
1、将列表生成式的[]改成()
l=[xx for x in range(10)]
g=(xx for x in range(10))
2、打印:
next(g)一个个打印
for循环打印
注:赋值语句
a,b=b,a+b
同时进行
3、把函数中的print改为yield
generator的函数每次调用next()时执行,遇到yield返回,再次执行时从上次返回的yield语句处继续执行
层次性,不断中断
三、迭代器
1、可迭代对象iterable:可直接作用于for循环的对象
包括集合数据类型list,tuple,dict,set,str
与generator(生成器与带yield的generator function)
通过isinstance()判断
2、迭代器iterator:可以被next()函数调用并不断返回下一个值
通过isinstance判断
3、iter()函数
将list,dict,str等iterable变成iterator