Python中list.sort方法和内置函数sorted的比较

本文介绍了Python中对列表排序的两种方法:list.sort()和内置函数sorted()。list.sort()会就地排序,不返回新列表,而sorted()则返回一个新的排序列表。此外,讲解了reverse参数用于降序排序,key参数用于自定义排序依据。举例展示了不同用法,如忽略大小写排序、按字符串长度排序等。
摘要由CSDN通过智能技术生成

List.sort

list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。这也是这个方法的返回值是None 的原因,提醒你本方法不会新建一个列表。

在这种情况下返回None 其实是Python 的一个惯例:如果一个函数或者方法对对象进行的是就地改动,那它就应该返回None,好让调用者知道传入的参数发生了变动,而且并未产生新的对象。例如,random.shuffle 函数也遵守了这个惯例。

Sorted

与list.sort 相反的是内置函数sorted,它会新建一个列表作为返回值。这个方法可以接受任何形式的可迭代对象作为参数,甚至包括不可变序列或生成器。而不管sorted 接受的是怎样的参数,它最后都会返回一个列表。

不管是list.sort 方法还是sorted 函数,都有两个可选的关键字参数。

  • reverse
    如果被设定为True,被排序的序列里的元素会以降序输出(也就是说把最大值当作最
    小值来排序)。这个参数的默认值是False。
  • key
    一个只有一个参数的函数,这个函数会被用在序列里的每一个元素上,所产生的结果将是排序算法依赖的对比关键字。比如说,在对一些字符串排序时,可以用key=str.lower 来实现忽略大小写的排序,或者是用key=len 进行基于字符串长度的排序。这个参数的默认值是恒等函数(identity function),也就是默认用元素自己的值来排序。

注意:
可选参数key 还可以在内置函数min() 和max() 中起作用。另外,还有些标准库里的函数也接受这个参数,像itertools.groupby() 和heapq.nlargest() 等。

>>> fruits = ['grape', 'raspberry', 'apple', 'banana']
>>> sorted(fruits)
['apple', 'banana', 'grape', 'raspberry']>>> fruits
['grape', 'raspberry', 'apple', 'banana']>>> sorted(fruits, reverse=True)
['raspberry', 'grape', 'banana', 'apple']>>> sorted(fruits, key=len)
['grape', 'apple', 'banana', 'raspberry']>>> sorted(fruits, key=len, reverse=True)
['raspberry', 'banana', 'grape', 'apple']>>> fruits
['grape', 'raspberry', 'apple', 'banana']>>> fruits.sort()>>> fruits
['apple', 'banana', 'grape', 'raspberry']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值