python中如何给list排序?

Python中排序可用sort()和sorted(),前者原地修改列表,后者返回新列表;通过reverse控制升降序,key指定排序规则,如按长度或忽略大小写。

Python中给list排序有两种常用方法:使用列表的sort()方法或内置的sorted()函数。它们都能实现排序,但有关键区别。

1. 使用 list.sort() 方法(原地排序)

这个方法会直接修改原始列表,不返回新列表,而是对原列表进行排序。

  • 调用方式:list.sort(reverse=False)
  • reverse=True 表示降序,reverse=False(默认)表示升序
  • 排序后原列表内容被改变

示例:

numbers = [3, 1, 4, 1, 5]
numbers.sort()
print(numbers)  # 输出: [1, 1, 3, 4, 5]

numbers.sort(reverse=True) print(numbers) # 输出: [5, 4, 3, 1, 1]

2. 使用 sorted() 函数(返回新列表)

这个函数不会修改原列表,而是返回一个新的已排序列表。

  • 调用方式:sorted(list, reverse=False)
  • 适用于任何可迭代对象(如元组、字符串等)
  • 原列表保持不变

示例:

words = ['banana', 'apple', 'cherry']
sorted_words = sorted(words)
print(sorted_words)  # 输出: ['apple', 'banana', 'cherry']
print(words)         # 输出: ['banana', 'apple', 'cherry'](原列表没变)

3. 按自定义规则排序(key参数)

如果想按特定规则排序,比如按字符串长度、忽略大小写等,可以使用 key 参数。

示例:按字符串长度排序

fruits = ['apple', 'fig', 'banana']
fruits.sort(key=len)
print(fruits)  # 输出: ['fig', 'apple', 'banana']

示例:忽略大小写排序

names = ['Alice', 'bob', 'Charlie']
sorted_names = sorted(names, key=str.lower)
print(sorted_names)  # 输出: ['Alice', 'bob', 'Charlie']

基本上就这些。根据是否需要保留原列表来选择 sort() 还是 sorted(),再配合 key 和 reverse 参数就能应对大多数排序需求。