zoukankan      html  css  js  c++  java
  • python3 推导式大总结

    推导式 --总结并引出 生成器推导式

    ##列表推导式

    >>> a = [i for i in range(100) if not(i%2) and i%3] ##注意列表是中括号 三项内容 变量 循环体 判断条件
    >>> a #输出为符合判断条件的结果 100以内能被2整除的数字
    [2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98]
    >>>

    ##字典推导式

    >>> b = {i : i %2 ==0 for i in range(20)} ##字典推导式注意 那个独特的 冒号 ':' 三项内容 变量 条件 循环体
    >>> b ##和列表推导式不一样的就是输出的结果,如果判断条件成立 输出就是True 否则输出False
    {0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True, 11: False, 12: True, 13: False, 14: True, 15: False, 16: True, 17: False, 18: True, 19: False}
    >>>

    ##集合推导式

    >>> c ={i for i in [1,1,2,5,6,48,7,9,6,5,4,1,2,3,65,2,6,52,6,9,5]} ##集合推导式要注意的是 他和字典推导式的区别和联系 练习是 外部都是用的[]中括号的 不同就很明显了 两项内容 变量 循环体 
    >>> c ##输出内容 为本例中的列表的非重复输出
    {1, 2, 3, 4, 5, 6, 7, 9, 48, 52, 65}
    >>> 

    '''集合(set)是一个无序不重复元素的序列。
    它的主要作用如下:
    去重,把一个列表变成集合,就自动去重了
    关系测试,测试两组数据之前的交集、差集、并集等关系
    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。'''    --------这一句总结来自网友 @奋斗中的咸鱼

    ###字符串推导式 看看行不行

    >>> d = "i for i in 'I love you!'"
    >>> d
    "i for i in 'I love you!'" ##我* 果然不可以 ,我们看到 这个双括号中的字符串 被原版的打印出来了 并没有做任何和其他推导式那样子的工作
    >>>

    ###那么还有什么可以玩一下推导式那 ,是不是还有元组推导式没有玩过 ,好吧 下面翻她的牌

    >>> e = (i for i in range(10)) ###元组使用小括号括起来的
    >>> e
    <generator object <genexpr> at 0x00000000034305E8> ###哎 怎回事,输出有点不一样啊,第一个单词好像叫做生成器的,对了,这个是生成器的推导式了,这里就是引出这个家伙的
    >>> next(e) ##是生成器就可以使用next()这个函数类查看了
    0
    >>> next(e)
    1
    >>> next(e)
    2
    >>> next(e)
    3
    >>> for i in e: ##想了一下 上边的一个一个输出太慢了 来一个循环吧 把剩下的内容搞出来
    print(i)
    
    
    4
    5
    6
    7
    8
    9
    >>> 

    #至此我们看到了原来元组是没有推导式的,他的书写格式原来是生成器的推导式,好吧记下来吧!元组原来和生成器还有这样的私交啊!

    ##还有一句话要说,这里我们找了生成器的推导式,那么生成器还有一个比较骚的操作 ,那就是生成器推导式如果作为一个函数的参数时,他可以直接写推导式而不用带上自己的小括号里(把衣服拔掉了 嘿嘿) 样子就像下边的

    >>> sum((i for i in range(10)))
    45
    
    >>> sum(i for i in range(10))
    45
    >>> 

    ##这个操作就是上边的对比了,去掉小括号吧(我养你)

    感谢:小甲鱼

  • 相关阅读:
    Free HTML5 Bootrap Admin Template
    js框架简明
    ELKF(Elasticsearch+Logstash+ Kibana+ Filebeat) 部署
    docker-构建 oracle12c-r2(12.2.0.1) 的镜像
    线上故障排查——drools规则引擎使用不当导致oom
    抓住业务核心,避免过度抽象
    Disruptor的应用示例——大文件拆分
    Disruptor3.0的实现细节
    Disruptor——一种可替代有界队列完成并发线程间数据交换的高性能解决方案
    大文件拆分方案的java实践(附源码)
  • 原文地址:https://www.cnblogs.com/loved/p/8671149.html
Copyright © 2011-2022 走看看