python 怎么让列表里的数从大到小排列,python中如何给列表排序

109c8e18ab497d90b6d426c09c6c1238.png

这篇文章主要介绍了Python中对列表排序实例,需要的朋友可以参考下

很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List L进行排序:

方法1.用List的成员函数sort进行排序

方法2.用built-in函数sorted进行排序(从2.4开始)

这两种方法使用起来差不多,以第一种为例进行讲解:

从Python2.4开始,sort方法有了三个可选的参数,Python Library Reference里是这样描述的

实例1:>>>L = [2,3,1,4]

>>>L.sort()

>>>L

>>>[1,2,3,4]

实例2:>>>L = [2,3,1,4]

>>>L.sort(reverse=True)

>>>L

>>>[4,3,2,1]

实例3:>>>L = [('b',2),('a',1),('c',3),('d',4)]

>>>L.sort(cmp=lambda x,y:cmp(x[1],y[1]))

>>>L

>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

实例4:>>>L = [('b',2),('a',1),('c',3),('d',4)]

>>>L.sort(key=lambda x:x[1])

>>>L

>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

实例5:>>>L = [('b',2),('a',1),('c',3),('d',4)]

>>>import operator

>>>L.sort(key=operator.itemgetter(1))

>>>L

>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

实例6:(DSU方法:Decorate-Sort-Undercorate)>>>L = [('b',2),('a',1),('c',3),('d',4)]

>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort

>>>A.sort()

>>>L = [s[2] for s in A]

>>>L

>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项

为比较关键字进行排序.

效率比较:

cmp < DSU < key

通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当

多关键字比较排序:

实例7:>>>L = [('d',2),('a',4),('b',3),('c',2)]

>>> L.sort(key=lambda x:x[1])

>>> L

>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字

排过序后再用第一个关键字进行排序呢?有两种方法

实例8:>>> L = [('d',2),('a',4),('b',3),('c',2)]

>>> L.sort(key=lambda x:(x[1],x[0]))

>>> L

>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

实例9:>>> L = [('d',2),('a',4),('b',3),('c',2)]

>>> L.sort(key=operator.itemgetter(1,0))

>>> L

>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

### Python 列表排序方法的使用范例 Python 提供了两种主要的方式来对列表进行排序:一种是通过 `list.sort()` 方法直接修改原列表;另一种则是利用内置函 `sorted()` 创建一个新的已排序列表副本[^1]。 #### 使用 `sort()` 方法 下面展示了如何运用 `sort()` 对列表中的元素按照默认升序方式进行排列: ```python str_list = ['banana', 'Apple', 'cherry', 'apple'] str_list.sort() print(str_list) # 输出结果可能为['Apple', 'apple', 'banana', 'cherry'] ``` 需要注意的是,当涉及到小写字母混合的情况时,默认情况下写会先于小写被放置在前面因为其ASCII码值较小[^3]。 对于需要忽略小写的场景可以指定关键字参`key=str.lower`: ```python str_list = ['Banana', 'apple', 'Cherry', 'APPLE'] str_list.sort(key=str.lower) print(str_list) # 可能输出 ['APPLE', 'apple', 'Banana', 'Cherry'] ``` #### 应用 `sorted()` 函 如果不想改变原始据结构而是创建一份新的有序拷贝,则应该采用`sorted()` : ```python original_list = [5, 2, 9, 1] new_sorted_list = sorted(original_list) print(new_sorted_list) # 打印 [1, 2, 5, 9] print(original_list) # 原始列表保持不变 [5, 2, 9, 1] ``` 同样支持传入额外的关键字参来定制化行为模式,例如降序排列可通过设置`reverse=True` 实现[^1]: ```python numbers = [4, 2, 7, 5] descending_numbers = sorted(numbers, reverse=True) print(descending_numbers) # 显示 [7, 5, 4, 2] ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值