Python中sorted参数的设计

来源:互联网 发布:微信砸金蛋源码下载 编辑:程序博客网 时间:2024/06/06 02:17

Python中的lambda函数

  1. lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。lambda允许用户快速定义单行函数,当然用户也可以按照典型的函数定义完成函数。lambda的目的就是简化用户定义使用函数的过程。
  2. 函数定义:lambda [arguments]: expression。例如:
    log2 = lambda x:log(x) / log(2)
  3. 再例如:
  4. >>>bar=lambda :'this is a bar'>>>print barthis is a bar

python中的operator.itemgetter()和operator.attrgetter()函数

  1. 在排序时, 可以用lambda表达式将对象map成keys;例如
    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]sorted(students, key=lambda student : student[2])

  2. 亦可以使用operator包中的attrgetter和itemgetter函数以提高效率
    a = [1,2,3] >>> b=operator.itemgetter(1)      //定义函数  b,获取对象的第1个域的值>>> b(a)                          //现在定义的b相当于一个运算符,现在给它一个参数a,就可以运算2 >>> b=operator.itemgetter(1,0)  //定义函数b,获取对象的第1个域和第0个的值>>> b(a) (2, 1)
    operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),看上面例子,attrgetter则是取字典中相应键的值,看下面例子:
    # 考虑 Student 对象class Student:    def __init__(self, name, grade, age):            self.name = name            self.grade = grade            self.age = age    def __repr__(self):            return repr((self.name, self.grade, self.age))# 建立一组Student对象students = [    Student('jane', 'B', 12),    Student('john', 'A', 12),    Student('dave', 'B', 10),]from operator import itemgetter, attrgetter# 对students按照年龄排序print sorted(students, key=attrgetter('age'))# 其等价于print sorted(students, key=lambda o: o.age)# 输出: >>> [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]# 亦可以按多个key排序, 先按age再按grade排序print sorted(students, key=attrgetter('age', 'grade'))# 输出: >>> [('dave', 'B', 10), ('john', 'A', 12), ('jane', 'B', 12)]



原创粉丝点击