list排序

在Python中,对列表进行排序有多种方法,包括使用内置的排序方法和函数。以下是几种常见的方法:

 1. 使用 `list.sort()` 方法

`list.sort()` 方法会对列表进行原地排序(in-place),也就是说,它会修改原始列表,并不会返回新的列表。

#### 示例:

```python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)  # 输出: [1, 2, 4, 5, 6, 9]
```

#### 逆序排序:

```python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 4, 2, 1]
```

#### 按自定义规则排序:

可以通过 `key` 参数指定一个函数,这个函数会作用于列表的每个元素,用其返回值进行排序。

```python
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words)  # 输出: ['date', 'apple', 'banana', 'cherry']


```

 2. 使用 `sorted()` 函数

`sorted()` 函数会返回一个新的排序后的列表,不会修改原始列表。

#### 示例:

```python
numbers = [4, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 2, 4, 5, 6, 9]
print(numbers)         # 输出: [4, 2, 9, 1, 5, 6]
```

#### 逆序排序:

```python
numbers = [4, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出: [9, 6, 5, 4, 2, 1]
```

#### 按自定义规则排序:

```python
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出: ['date', 'apple', 'banana', 'cherry']


```

 3. 使用 `operator` 模块进行排序

在某些情况下,你可能会希望按照对象的某个属性进行排序,可以使用 `operator` 模块中的 `attrgetter` 或 `itemgetter`。

#### 按对象属性排序:

假设我们有一个包含字典的列表,需要按字典的某个键排序:

```python
from operator import itemgetter

students = [
    {"name": "John", "age": 25},
    {"name": "Jane", "age": 22},
    {"name": "Dave", "age": 24}
]

# 按年龄排序
sorted_students = sorted(students, key=itemgetter('age'))
print(sorted_students)
# 输出: [{'name': 'Jane', 'age': 22}, {'name': 'Dave', 'age': 24}, {'name': 'John', 'age': 25}]


```

 4. 使用 lambda 表达式进行排序

`lambda` 表达式也可以用于 `key` 参数进行自定义排序。

#### 示例:

```python
students = [
    {"name": "John", "age": 25},
    {"name": "Jane", "age": 22},
    {"name": "Dave", "age": 24}
]

# 按年龄排序
sorted_students = sorted(students, key=lambda student: student['age'])
print(sorted_students)
# 输出: [{'name': 'Jane', 'age': 22}, {'name': 'Dave', 'age': 24}, {'name': 'John', 'age': 25}]


```

总结

- 使用 `list.sort()` 方法可以对列表进行原地排序,直接修改列表。
- 使用 `sorted()` 函数可以返回一个新的排序后的列表,不修改原列表。
- 可以通过 `key` 参数指定自定义排序规则,如按长度排序或按对象的某个属性排序。
- 使用 `reverse=True` 参数可以实现逆序排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值