lambda函数以及sort,sorted

本文深入探讨了Python中两种主要的排序方法:sort()与sorted()的区别及应用场景,并提供了使用functools.cmp_to_key实现复杂排序逻辑的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.sort()为在原有的list上作修改

sorted()为返回一个新的修改过的list

c=sorted(b,cmp=lambda x,y:1 if (x.upper()>y.upper()) else -1,reverse=True)

 b=sort(lambda x,y:1 if (x.upper()>y.upper()) else -1)


python3无cmp


使用 functools.cmp_to_key 即可。


class Solution:
    # @param {integer[]} nums
    # @return {string}
    def largestNumber(self, nums):
        from functools import cmp_to_key
        key = cmp_to_key(lambda x,y: int(y+x)-int(x+y))
        res = ''.join(sorted(map(str, nums), key=key)).lstrip('0')
        return res or '0'


### Python中使用lambda函数sort函数实现排序 在Python中,`sort()` 方法是列表对象的一个内置方法,用于对列表中的元素进行原地排序。该方法接受一个可选参数 `key`,该参数是一个函数,用于从每个元素中提取一个用于比较的键[^1]。Lambda函数因其简洁的语法特性,非常适合用作 `key` 参数的值[^2]。 以下是一个具体的示例,展示如何使用 `lambda` 函数结合 `sort()` 方法对列表进行排序: ```python # 定义一个包含元组的列表 data = [("Alice", 25), ("Bob", 20), ("Charlie", 30)] # 使用 lambda 函数按年龄(第二个元素)进行升序排序 data.sort(key=lambda x: x[1]) print(data) ``` 上述代码将输出: ``` [('Bob', 20), ('Alice', 25), ('Charlie', 30)] ``` 在这个例子中,`lambda x: x[1]` 表示从每个元组中提取第二个元素作为排序的关键字[^3]。 如果需要降序排序,则可以通过设置 `reverse=True` 参数来实现: ```python # 按年龄降序排序 data.sort(key=lambda x: x[1], reverse=True) print(data) ``` 输出结果为: ``` [('Charlie', 30), ('Alice', 25), ('Bob', 20)] ``` 此外,`sorted()` 函数也可以实现类似的功能,但它不会修改原始列表,而是返回一个新的已排序列表。其用法如下: ```python # 使用 sorted() 函数按姓名长度升序排序 sorted_data = sorted(data, key=lambda x: len(x[0])) print(sorted_data) ``` 输出结果为: ``` [('Bob', 20), ('Alice', 25), ('Charlie', 30)] ``` 在这里,`lambda x: len(x[0])` 表示根据每个元组的第一个元素(名字)的长度进行排序[^1]。 ### 注意事项 - Lambda函数适合简单的操作场景,如果逻辑较为复杂,建议定义普通的函数以提高代码可读性。 - 在使用 `sort()` 方法时需要注意,它会直接修改原始列表,而 `sorted()` 函数则不会改变原始数据[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值