Python中的sort和lambda函数

一、sort在Python中存在两种形式,分别是sorted(str),另一种是list.srot()

  1. sorted()函数是Python的内置函数,具体形式为sorted(iterable, cmp=None, key=None, reverse=False),其中iterable是可迭代对象,包括列表、元组、字典、字符串;cmp代表比较函数;key代表迭代对象中的某个属性,如某个元素的下标;reverse代表升序或者降序
    例如
    students = [(‘john’, ‘A’, 15), (‘jane’, ‘B’, 12), (‘dave’, ‘B’, 10)]
    sorted(students, key=lambda student : student[2])
    结果如图:在这里插入图片描述
    lambda函数用法举例:
    L=[('b',2),('a',1),('c',3),('d',4)]
    #2、利用参数 cmp 排序
    sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
     结果:
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    #3、利用参数 key 排序
    sorted(L, key=lambda x:x[1])
    #结果:
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    #4、按年龄升序
    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    sorted(students, key=lambda s: s[2])
     结果:
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
    #5、按年龄降序
    sorted(students, key=lambda s: s[2], reverse=True)
    #结果:
    [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    
  2. sort函数是针对列表的,不改变原有的列表
    例如
    Python中的sort和lambda函数_第1张图片

二、lambda函数

  1. lambda的语法形式
    lambda [arg1 [,arg2,…argn]]:expression
    其中lambda是关键字;
    [arg…] 是参数列表,可以是多个,也可以是一个;
    expression 是一个参数表达式,表达式中出现的参数需要在[arg…]中有定义,并且表达式只能是单行的,只能有一个表达式。
  2. lambda函数是没有名字的;
  3. 输入是传入到参数列表[arg1 [,arg2,…argn]]的值,输出是根据表达式expression计算得到的值。
  4. lambda的用法
    lambda x, y: x*y			# 函数输入是x和y,输出是它们的积x*y
    lambda:None					# 函数没有输入参数,输出是None
    lambda *args: sum(args)		# 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
    lambda **kwargs: 1			# 输入是任意键值对参数,输出是1
    
  5. 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
    例如
    add = lambda x, y: x+y
    相当于定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add就指向了具有加法功能的函数。
    这时我们如果执行add(1, 2),其输出结果就为 3。
  6. 将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
    例如
    #为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:
    time.sleep=lambda x: None
    #这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
    #例如:
    time.sleep(3)	# 程序不会休眠 3 秒钟,而是因为lambda输出为None,所以这里结果是什么都不做、
    

三、sort函数和lambda函数结合使用

假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参数key,也就是关键词,如下面代码所示,lambda是一个匿名函数,是固定写法;x表示匿名函数的输入,即列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字;x[0]表示匿名函数的输出,即元组里的第一个元素,即key = x[0];所以这句命令的意思就是按照列表中第一个元素进行排序

a = [('b', 4), ('a', 12), ('d', 7), ('h', 6), ('j', 3)]
a.sort(key=lambda x: x[0])
print(a)<br>>>>[('a', 12), ('b', 4), ('d', 7), ('h', 6), ('j', 3)]

更多内容参考博客:https://blog.csdn.net/PY0312/article/details/88956795

你可能感兴趣的:(python学习笔记,python,pycharm)