py高级特性2.0

作者: 小灰灰233 | 来源:发表于2017-05-13 21:21 被阅读2次

    一、列表生成式

    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

    相关文章

      网友评论

        本文标题:py高级特性2.0

        本文链接:https://www.haomeiwen.com/subject/lyytxxtx.html