Python速成-Lambda表达式以及sorted函数

接上一篇文章 Python速成-列表和字典

注意!注意!我这个是速成笔记!
如果要看详细的教程,建议去网上找视频看

一、Lambda表达式

开门见山,就不介绍Lambda表达式的来源了。

说白了,Lambda表达式就是def(方法)的“简单版”,只包含了方法的函数体,即一个简单的表达式,没有什么复杂的语句,表达式的计算结果就是Lambda表达式的返回值

表达式结构如下:

lambda argument_list: expression
其实就是
lambda 参数列表 : 逻辑操作

直接举例子,逻辑操作可以实现任何你想实现的,笔记只记录了最简单的例子

# 简单的逻辑,比较大小
Test = lambda x,y : x>y
print(Test(2,4))
# 简单逻辑,连接字符串
Test2 = lambda x,y,z : str(x)+y+str(z)
print(Test2(88,"连接",66))

输出结果

二、sorted函数

python中的sorted函数有点像java中的Compare方法或者是CompareTo接口,就是自定义的排序方法,那么我们就需要利用到 lambda作为参数传递进去

2.1 sorted排序 可以直接使用,默认就是升序排列

sorted([3,57,2,4,7])

2.2 自定义数字排序


listTest = [[2,0],[2,1],[5,8],[4,3],[1,9]]

# 先按照第一个参数升序排序
# 如果第一个参数相同,按照第二个参数排序,升序排列
listChange = sorted(listTest,key=lambda x : (x[0],x[1]))
print(listChange )

# 如果第一个参数相同,按照第二个参数排序,降序排列
listChange = sorted(listTest,key=lambda x : (x[0],-x[1]))
print(listChange )

2.3 自定义字符串排序


# 直接按照字符串排序(abcd……的顺序)
listChar = [[4,"ab"],[2,"b"],[5,"abc"],[9,"def"]]
listChange = sorted(listChar,key=lambda x:x[1])
print(listChange)


# 统计字符串中"a"的数量,数量相同就按照序号排列
listChar = [[0,"ab"],[1,"aab"],[2,"abc"],[3,"aaaf"]]
listChange = sorted(listChar,key=lambda x:(x[1].count("a"),x[0]))
print(listChange)

2.4 题目

在写力扣的时候写到了这种需要排序的相关的题目
矩阵中战斗力最弱的K行
分享一下自己写的(可能并不是最简单的)

class Solution(object):
    def kWeakestRows(self, mat, k):
        # 记录每一行的1的数量
        listNum = []
        for index in range(len(mat)):
            listMat = mat[index]
            listNum.append([listMat.count(1),index])
        listChange = sorted(listNum,key=lambda x:(x[0],x[1]))
        # 记录最后的输出
        listPrint = []
        for i in range(0,k):
            listPrint.append(listChange[i][1])
        return listPrint
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值