Python列表排序的五种不同方式
在Python中,列表排序可以通过多种方式完成,以下是五种常见的方法:
使用内置的
sort()
方法:sort()
方法会对列表进行就地排序(即不返回新的列表,而是在原列表上进行排序),默认情况下是按升序排序。语法示例:
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers) # 输出: [1, 1, 2, 3, 4, 5, 9]
可以通过参数
reverse=True
进行降序排序。numbers.sort(reverse=True) print(numbers) # 输出: [9, 5, 4, 3, 2, 1, 1]
使用内置的
sorted()
函数:sorted()
函数会返回一个新的列表,原列表保持不变。默认升序排序。语法示例:
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出: [1, 1, 2, 3, 4, 5, 9]
也可使用
reverse=True
进行降序排序:sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers) # 输出: [9, 5, 4, 3, 2, 1, 1]
使用键函数进行自定义排序:
- 可以通过传递
key
参数对复杂或自定义对象进行排序,比如按长度排序字符串。 语法示例:
words = ["apple", "pear", "banana", "kiwi"]
words.sort(key=len)
print(words) # 输出: ['kiwi', 'pear', 'apple', 'banana']
- 可以通过传递
排序与
lambda
函数结合:- 使用
lambda
表达式来创建更复杂的排序逻辑。 语法示例:
words = ["apple", "pear", "banana", "kiwi"]
words.sort(key=lambda word: word[-1]) # 按照最后一个字母排序
print(words) # 输出: ['banana', 'apple', 'pear', 'kiwi']
- 使用
使用自定义比较函数 (
cmp_to_key
):- 在Python 3中,直接使用比较函数是不可行的,但可以使用
functools.cmp_to_key
将其转换为一个key函数。 语法示例:
from functools import cmp_to_key
def compare(x, y):
return (x > y) - (x < y)
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers = sorted(numbers, key=cmp_to_key(compare))
print(sorted_numbers) # 输出: [1, 1, 2, 3, 4, 5, 9]
- 在Python 3中,直接使用比较函数是不可行的,但可以使用
这些方法允许我们根据不同需求对列表进行排序,选择合适的方法可以让代码更高效、更简洁。