zoukankan      html  css  js  c++  java
  • python之高级特性

    一、列表生成式

            列表生成式是python内置的可创建list的生产式。       

    r=list(range(1,11))
    print(r)
    运行结果:
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

          若要生成【1*1,2*2,3*3.....,10*10】,有两种方式:a,循环;b,列表生成式。    

    方法1:循环
    list=[]
    for x in range(1,11):
        list.append(x*x)
    print(list)
    ------------
    执行结果:
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    方法2:
    r=[x*x for x in range(1,11)]
    print(r)
    --------------
    执行结果:
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    2、if...else

      在一个列表生成式中,for前面的if...else是表达式,for后面的if是过滤条件,不能带else. 

    r=[x*x for x in range(1,11) if (x*x)%2==0]
    print(r)
    ----------------
    执行结果:
    [4, 16, 36, 64, 100]

     若list中即包含字符串又包含整数,非字符串类型没有lower()方法,列表生成式会报错。其内建的isinstance函数可以判断一个变量是不是字符串。

    L1=['Hello', 'World', 18, 'Apple', None]
    L2=[ s.lower() for s in L1  if isinstance(s,str)]
    print(L2)
    ------------------
    执行结果:
    ['hello', 'world', 'apple']

     二、生成器generator

      如果我们直接创建一个list,内存有限,一个包含1000多个元素的列表,占很大的内存存储空间。

      如果列表元素能够按照算法规则推算出来,访问前面几个元素 就能推出后面的,可节省很大的内存空间。

      创建Generator有很多种方法:a,将[]换成();b,yield关键字

     generator和函数的执行流程不一样。

     函数是顺序执行,遇到return语句或者最后一行函数语句就返回。

     而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行

  • 相关阅读:
    TypeScript 基本数据类型
    TypeScript 一个面向对象的JavaScript
    Express 路由Router
    Node.js 自启动工具(supervisor 和 nodemon )
    Node.js Express WEB框架
    Node.js 文件操作
    Node.js回调函数和事件循环机制
    HashMap原理
    mybatis动态sql(常用)
    MySQL知识点
  • 原文地址:https://www.cnblogs.com/balllyh/p/12795060.html
Copyright © 2011-2022 走看看