• 列表推导式 生成器表达式


    推导式 comprehensions(又称解析式):是 Python 中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点

    列表推导式 就是一个简单的公式,我们用这个列表推导式,把你好几行的for循环的过程给一行能解决掉,但是这个过程你必须放在列表的框中[  ]

    一般用法:

    #循环模式
    #[经过加工的i for i in 可迭代对象]

    #筛选模式
    #[经过加工的i for i in 可迭代对象 if 条件 筛选]

    比如你要将1-12的数字都加入一个列表中 ,这个时候你用for是最简便的

    li = []  #新建一个列表  把所有的信息都加入其中
    for i in  range(1, 12):  #循环遍历1-12
        li.append(i)
    print(li)

    #你以为这就是你最简便的方法吗 NO 最简便的方式 在下面呢
    这就是列表的推导式
    l1 = [i for i in range(1,13)]  #用列表的推导式来 做
    print(l1)


    生成器表达式:

    其实就是和列表推导式 差不多 但是它的外部用的不是列表号  而是括号

    l_obj = ('python %s期'% i for i in range(1,12))  #生成器生程式就是和列表推导式换了括号
    print(l_obj)
    print(l_obj.__next__())  #打印这个生成器生成式第一个元素
    print(l_obj.__next__())#打印这个生成器生成式第二个元素

    #列表推导式:一目了然,占内存。
    #生成器表达式:不易看出,节省内容。

    推导式练习:

    l2 = [i*i for i in range(1,11)]   #用列表推导式来做一个1-10的所有数字的平方
    print(l2)

    #打印1-9的偶数
    l3 = [i for i in range(1,10) if i %2 == 0]  
    print(l3)

    #打印1-30内的所有的能整除3的数字
    l3 = [i for i in range(31) if i %3 == 0]
    print(l3)

    #求一个列表中的嵌套的列表 然后把里面的元素含有两个e的元素打印出来
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
    ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    m = [name for i in names for name in i if name.count('e')==2]
    print(m)

    推导式前面加返回的变量  后面就是for循环然后和可迭代的对象  还可以加其他的判断语句

    生成器生程式只是列表的推导式给它的括号 改变下 然后生程式的取值也是按照__next__()方法来取值的

    字典的推导式:

    #去一个字典中的key对应的value的key给返回出来
    mcase = {'a':10,'b':34}
    mcase_freque={ mcase[k]:k for k in mcase}  #把字典中的对应的key和value翻转并且给输出
    print(mcase_freque)
  • 相关阅读:
    day 29-2 socket 文件传输、udp协议
    day 29-1 socket
    day 28-1 元类、异常处理
    day 27-1 反射、内置方法
    day 26-1 property、绑定与非绑定方法
    day 25-1 接口类、抽象类、多态
    day 24-1 继承
    day 23-1 类的命名空间、组合
    day 22
    PyMySQL操作mysql数据库(py3必学)
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/8719134.html
Copyright © 2020-2023  润新知