ITS·黑客

py高级特性2.0

2017-05-13  本文已影响2人  小灰灰233

一、列表生成式

py内置用来创建list的生成式

list(range(1,11))

[xx for x in range(1,11)]
形式+范围
[x
x 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=(x
x 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

上一篇下一篇

猜你喜欢

热点阅读