Python sorted() 高阶函数

描述

sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

语法

sorted 语法:

sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表。

实例

以下实例展示了 sorted 的使用方法:

 1 >>>a = [5,7,6,3,4,1,2]
 2 >>> b = sorted(a)       # 保留原列表
 3 >>> a
 4 [5, 7, 6, 3, 4, 1, 2]
 5 >>> b
 6 [1, 2, 3, 4, 5, 6, 7]
 7
 8 >>> L=[(‘b‘,2),(‘a‘,1),(‘c‘,3),(‘d‘,4)]
 9 >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函数
10 [(‘a‘, 1), (‘b‘, 2), (‘c‘, 3), (‘d‘, 4)]
11 >>> sorted(L, key=lambda x:x[1])               # 利用key
12 [(‘a‘, 1), (‘b‘, 2), (‘c‘, 3), (‘d‘, 4)]
13
14
15 >>> students = [(‘john‘, ‘A‘, 15), (‘jane‘, ‘B‘, 12), (‘dave‘, ‘B‘, 10)]
16 >>> sorted(students, key=lambda s: s[2])            # 按年龄排序
17 [(‘dave‘, ‘B‘, 10), (‘jane‘, ‘B‘, 12), (‘john‘, ‘A‘, 15)]
18
19 >>> sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
20 [(‘john‘, ‘A‘, 15), (‘jane‘, ‘B‘, 12), (‘dave‘, ‘B‘, 10)]
21 >>>

注:key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次

原文地址:https://www.cnblogs.com/xiaoliu1012/p/9875885.html

时间: 2024-10-19 02:40:28

Python sorted() 高阶函数的相关文章

Python 学习——高阶函数 filter 和 sorted

filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知道,filter函数传入了两个参数,第一个为函数,第二个为序列 sorted 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽

(三)3-4 Python的高阶函数和匿名函数

高阶函数:把函数当成参数传递的一种函数,例如 def add(x,y,f): return f(x) + f(y) print(add(-8,11,abs)) 运行结果: 19 注:1. 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值2.最后做运算 map()函数 map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表.例如 def f2(x): return

python的高阶函数

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数. 高阶函数 定义:一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数. map/reduce Python内建了map()和reduce()函数. 1.map()函数 map()函数接受两个参数,一个是函数,一个是Iterable(可迭代对象),map将传入的函数依次作用到序列的每一个元素上,然后将结果作为新的Iterator返回. def f(x): return x*x r = map(f,[1,2

python之高阶函数

在python中的高阶函数就是把一个函数作为一个行参去调用另外一个函数,如: def a (): pass return .... def b (): pass return .... a(b())

Python之高阶函数map/reduce

Python内建map()和reduce()函数 map()函数接收两个参数一个是函数一个是一个Iterable(迭代器),并把结果作为新的Iterator(生成器)返回 有一个函数f(x)=x*x作用于序列list[1,2,3,4,5,6,7,8,9] 使用python函数实现 >>> r=map(f,range(1,4)) >>> r <map object at 0x7fcec039ee80> >>> list(r) [1, 4, 9

python的高阶函数和函数即变量

1:高阶函数 #高阶函数 定义:把函数作为参数作为另一个函数的参数 def test(a,b): return a*b def test_1(f,c): return f*c print(test_1(test(1,2),5)) 运行结果: 10 2:函数即变量 def foo(): print("in the foo") bar() def bar(): print("in the bar") foo() 运行结果: in the foo in the bar d

初识python:高阶函数

定义: 变量可以指向函数,函数的参数能接收变量,那么,一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数. 简单说就是:把函数当差参数传递的函数就是高阶函数 原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式. 实例1: # abs 内置取绝对值函数 def add(a,b,f): return f(a) + f(b) #a的绝对值+b的绝对值 print(add(1,-2,abs)) # 取3,-6的绝对值之和 返回值:3 在不修改被装饰函数源代码的情况下为其

[ Python - 9 ] 高阶函数map和reduce连用实例

1. 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456: from functools import reduce def str2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] def str2float(s): if '.' in s: # 将字符串s拆分成list类型 s = s.s

用Python的高阶函数写日志,并且捕获异常信息

import loggingimport timeimport tracebackfrom selenium import webdriver def log(test_case_func): def wraps(*args, **keywords):  log_name= time.strftime("%Y%m%d%H%M%S", time.localtime())+test_case_func.__name__  logging.basicConfig(level=logging.