列表对象的排序sort、reverse方法 注意:结合lambda函数的自定义规则排序
时间: 2024-03-10 10:46:13 浏览: 14
当使用列表对象的sort方法进行排序时,可以传入一个可选的参数key,该参数接受一个函数,用于指定排序的规则。lambda函数可以方便地定义这样的规则。
例如,假设有一个存储数字的列表,需要按照数字的倒序进行排序。可以使用以下代码:
```
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort(reverse=True, key=lambda x: x)
print(my_list)
```
这里的lambda函数是用来指定排序规则的,它接受一个参数x,返回x本身。因为这里需要按照数字的倒序进行排序,所以reverse参数被设置为True。
同样的,reverse方法也可以使用类似的lambda函数来自定义规则。例如,假设有一个存储字符串的列表,需要按照字符串的长度进行排序。可以使用以下代码:
```
my_list = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
my_list.sort(key=lambda x: len(x))
print(my_list)
```
这里的lambda函数接受一个参数x,返回x的长度。因为这里需要按照字符串的长度进行排序,所以不需要使用reverse参数。
相关问题
python 列表sort排序的规则
Python 的 `sort()` 方法可以用于对列表进行排序。它有两个可选参数:`key` 和 `reverse`。
`key` 参数表示排序的规则。如果指定了 `key`,则 `sort()` 方法将会按照 `key` 函数的返回值进行排序。例如,如果要按照列表中每个元素的第二个字符进行排序,可以使用如下代码:
```python
my_list = ['abc', 'def', 'ghi']
my_list.sort(key=lambda x: x[1])
print(my_list) # 输出 ['abc', 'ghi', 'def']
```
`reverse` 参数表示是否按照降序进行排序。默认情况下,`reverse` 的值为 `False`,表示按照升序进行排序。如果将 `reverse` 设置为 `True`,则按照降序进行排序。例如:
```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort(reverse=True)
print(my_list) # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
如果 `key` 和 `reverse` 都指定了,`sort()` 方法将会按照 `key` 函数的返回值进行排序,并且按照降序进行排序。
请用列表本身的sort功能并结合lambda匿名函数再次重现上述问题的答案。
以下是使用列表本身的sort功能和lambda匿名函数重现上述问题的答案:
```
lst = [('John', 28), ('Kate', 23), ('Alex', 35), ('David', 20)]
lst.sort(key=lambda x: x[1], reverse=True)
print(lst)
```
输出为:
```
[('Alex', 35), ('John', 28), ('Kate', 23), ('David', 20)]
```
其中,lambda函数的作用是对每个元组进行排序,根据元组中第二个元素(即年龄)进行降序排列。排序后的结果与之前使用sorted函数的结果相同。