• [放鞭炮][福]玉竹斑斑节日快乐![福][放鞭炮] 2019-05-23
  • 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • 山西快乐十分前三基本:Python高级特性与几种函数的讲解

    山西体彩11选5直选遗漏 www.caxru.com  更新时间:2019年03月08日 14:20:48   作者:沙沙罗曼   我要评论

    今天小编就为大家分享一篇关于Python高级特性与几种函数的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    切片

    从list或tuple中取部分元素。

    list = [1, 2, 3, 4]
    list[0 : 3] # [1, 2, 3]
    list[-2 : -1] # -1表示最后一个,[3, 4]
    list[1 :: 2] # index = 1开始,每两个取一个[2, 4]
    list[:] # 复制list,[1, 2, 3, 4]
    # 针对tuple,切片同样适用

    iterable、iterator

    可迭代,迭代器,集合类型数据可迭代但不是迭代器,可通过iter()转变为迭代器。

    可迭代对象可使用for-in语句遍历,判断x是否可迭代:isinstance(x, Iterable)。

    列表生产式

    高效创建列表,见代码示例:

    # range转list
    list(range(1, 5)) # [1, 2, 3, 4]
    [x * x for x in range(1, 5)] # [1, 4, 9, 16]
    [x * x for x in range(1, 5) if x % 2 == 0] # [4, 16]
    [m + n for m in 'ABC' for n in 'XYZ'] # ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
    [s.lower() for s in ['Hello', 'World', 'IBM', 'Apple']] # like map

    generator

    isinstance(generator, Iterable) = True,可使用for-in语句,或者使用next方法。

    g = (x * x for x in range(10))
    next(g) # 0
    next(g) # 1
    next(g) # 4
    for item in g:
      print(item) # 9 16 ... 81

    generator函数

    generator函数本质是一个有状态的函数,遇到yield语句时会暂时返回。

    # 有yield语句,表明时generator函数
    def gen_fn():
      init = 0
      while init < 10:
        yield init
        init += 1
      return 'done'
    call = gen_fn() # 获得可迭代对象call
    next(call) # 0
    next(call) # 1
    # 每次调用generator函数,得到的是一个新的generator
    # for-in无法获得generator的返回值'done'
    for item in gen_fn():
      print(item) # 0 1 ... 9

    高阶函数

    参数是函数的函数即是高阶函数,可对比数学概念:g(x) = f(x) + 1,g(x)即高阶函数。

    • map
    # map(func, *iterables, ...)
    i = map(lambda x : x * x, [1, 2, 3]) # 返回Iterator
    list(i) # [1, 4, 9]
    • reduce
    from functools import reduce
    reduce(lambda previous, x : previous + x, [1, 2, 3, 4]) # 10
    • filter
    i = filter(lambda x : x % 2 == True, [1, 2, 3, 4])
    list(i) # [1, 3]
    • sorted 默认升序,通过key参数决定排序规则。
    sorted([1,3,2], key = lambda x : -x) # [3, 2, 1]

    返回函数做回函数返回值

    闭包概念:包含环境成分(自由变量)和控制成分的实体(lambda表达式,函数)。

    def lazy_sum(*args):
      ax = 0
      def sum():
        nonlocal ax
        for n in args:
          ax = ax + n
        return ax
      return sum
    fn = lazy_sum(1, 2, 3)  # ax + sum构成了闭包
    fn() # 6
    fn() # 12

    匿名函数

    即lambda表达式。

    装饰器

    函数包函数的语法糖?

    def log(fn):
      def call(*args, **kw):
        print('call %s():' % fn.__name__)
        return fn(*args, **kw)
      return call
    # @log的作用等同now = log(now)
    @log
    def now():
      print('2018-03-18')
    now() # call now(): 2018-03-18

    偏函数

    把一个函数的某些参数给固定住,返回一个新的函数。类似柯里化,但更强大?

    from functools import partial
    binary_int = partial(int, base = 2)
    binary_int('1000000') # 64

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    相关文章

    最新评论

  • [放鞭炮][福]玉竹斑斑节日快乐![福][放鞭炮] 2019-05-23
  • 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • pk10免费永久计划app 顶呱刮中国红是刮 腾讯彩票3串4精选 排列三和值表 北京赛车提前开奖号 中彩网3d开机号太湖叟钓 双色球开奖走势图 北京快3走势图 竞彩篮球胜分差推荐 极速时时彩计划网址 21点数牌 体彩p5走势图带连线专业版 澳洲幸运5历史开奖记录 二八杠规则 七星彩第四位杀号专家 北京时时彩计划软件下载