• Python模块学习


    Functools模块

      Higher-order functions and operations on callable objects,看这个标题我都是懵逼的,这都是啥啥啥啊,赶紧拿出百度翻译:可调用对象上的高阶函数和操作,看来以后真的应该开始试着学习英文了,作为一个IT人员,看英文就头晕,这是病,得治。

      Functoos模块是一个高阶函数库(作用与或者返回其他函数的函数),在这个模块中,任何可调用对象都可以被当作一个函数进行处理。

    模块中的函数

    1、functools.cmp_to_key(func)

      将老式的比较函数(comparison function)转化为关键字函数(key function)。与接受key function的工具一同使用(如 sorted(), min(), max(), heapq.nlargest(), itertools.groupby())。该函数主要用来将程序转成 Python 3 格式的,因为 Python 3后续版本中将不支持比较函数。

      比较函数是可调用的,接受两个参数,比较这两个参数并根据他们的大小关系返回负值、零或正值中的某一个。关键字函数也是可调用的,接受一个参数,同时返回一个可以用作排序关键字的值。

      简单来说就是:在sorted这种工具中,有二个参数是即cmp、key。cmp:比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序(例如:sorted中cmp表示使sorted按照cmp指定的方式进行排序,key表示,让sorted按照key指定的函数,进行排序),在Python 3 后续版本中,可能不会再支持这个选项,目前提供的过度方法是,把cmp函数通过functools模块提供的cmp_to_key函数,转换成key函数,然后利用key函数进行比较。

      一般来说,这两个参数不会同时出现,使用cmp,表示让sorted按照cmp的函数结果进行排序。使用key,表示指定按照迭代对象中的某一个元素排序。

    # old
    sorted(iterable[, cmp[, key[, reverse]]])
    
    # new 
    [sorted(iterable [, key [ reverse ]])
    # key = cmp_to_key(func)     利用cmp_to_key()把定义的比较函数转换为key函数
    

      

  • 相关阅读:
    spark之手机基站定位数据的商圈分析
    spark之客户流失预测
    spark之AHP层次分析顾客价值得分
    Web-Attak系列教程第二季0x13讲——信息收集
    Web-Attak系列教程第二季0x12讲——HTTP的请求与响应格式
    Python编程系列教程第14讲——继承
    独孤九剑与黑客编程
    Python编程系列教程第15讲——多态
    Python编程系列教程第16讲——拷贝自身到系统目录
    再谈独孤九剑与黑客编程
  • 原文地址:https://www.cnblogs.com/dachenzi/p/8001757.html
Copyright © 2020-2023  润新知