Python sorted()

sorted() 方法按升序对给定可迭代对象的元素进行排序并返回。

示例

numbers = [4, 2, 12, 8]

# sort the list in ascending order sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [2, 4, 8, 12]

这里,我们创建了一个新列表来存储已排序的列表。这是因为 sorted() 不会对给定的可迭代对象进行原地排序,它会创建一个包含已排序元素的新列表。


sorted() 语法

sorted(iterable)

这里,可迭代对象可以是任何我们想要排序的序列,例如 列表元组字符串字典集合不可变集合 等。


sorted() 参数

默认情况下,sorted() 只接受一个参数 - iterable

带可选参数的 sorted() 方法

除了可迭代对象,sorted() 方法还有两个可选参数:reversekey

sorted(iterable, key = …, reverse = …)

这里,

  • key - 决定排序比较依据的函数。默认值 - None
  • reverse - 决定排序顺序的布尔值。如果为 True,列表按降序排序

sorted() 返回值

该方法返回一个已排序的列表。


示例:按升序排序列表

# list of vowels in random order
vowels_list = ['e', 'a', 'u', 'o', 'i']

# sort the vowels print('Sorted Vowels:', sorted(vowels_list))
# Output: Sorted Vowels: ['a', 'e', 'i', 'o', 'u']
用于排序的不同可迭代对象

排序列表

numbers = [3,2,7,5,9,11]
print(sorted(numbers))

# Output: [2, 3, 5, 7, 9, 11]

排序元组

numbers = (4,2,1,6,8,15)
print(sorted(numbers))

# Output: [1, 2, 4, 6, 8, 15]

排序字典

dict = {1: 'one', 2: 'two', 3: 'three'}
print(sorted(dict))

# Output: [1, 2, 3]

排序集合

my_set = {'u', 'i', 'o', 'a', 'e'}
print(sorted(my_set))

# Output: ['a', 'e', 'i', 'o', 'u']

按降序排序

我们可以使用可选的 reverse 参数将列表按降序排序。例如,

numbers = [2, 7, 3, 9, 13, 11]

# sorting the numbers in descending order sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # Output: [13, 11, 9, 7, 3, 2]

这里,sorted(iterable, reverse = True) 按降序对列表进行排序。


使用 Key 函数排序

sorted() 方法接受另一个可选参数 - key 函数。例如,

sorted(iterable, key = len)

这里,len 是 Python 的内置函数,用于计算元素的长度。

在这种情况下,sorted() 方法根据元素的长度对列表进行排序。例如,

fruits = ['apple', 'banana', 'kiwi', 'pomegranate']

# sorts the list based on the length of each string sorted_fruits = sorted(fruits, key=len)
print('Sorted list:', sorted_fruits) # Output: Sorted list: ['kiwi', 'apple', 'banana', 'pomegranate']

注意:列表根据元素的长度从最低计数到最高计数进行排序。

关于 Python sorted() 的更多信息

sorted() 方法与 sort() 方法

sorted() 方法从原始列表获取元素并返回一个包含已排序元素的新列表。原始列表保持不变。例如,

numbers = [3, 1, 4, 1, 5, 9, 2, 5, 3]

# sort using sorted() method sorted_numbers = sorted(numbers)
print("Using sorted():", sorted_numbers) print("Original list:", numbers)

输出

Using sorted(): [1, 1, 2, 3, 3, 4, 5, 5, 9]
Original list: [3, 1, 4, 1, 5, 9, 2, 5, 3]

sort() 方法直接修改原始列表并且不返回任何值。例如,

numbers = [3, 1, 4, 1, 5, 9, 2, 5, 3]

# sort using sort() method numbers.sort()
print("Using sort():", numbers) # Output: Using sort(): [1, 1, 2, 3, 3, 4, 5, 5, 9]

要了解更多信息,请访问 Python sort()

使用自定义 Key 函数排序列表

我们也可以使用用户定义的函数作为 key 函数。例如,

# take age from each element
def get_age(person):
    return person[1]

# list of tuple
personal_info = [("Alice", 25), ("Bob", 30), ("Charlie", 22)]

# sort the list based on age sorted_personal_info= sorted(personal_info, key=get_age)
print(sorted_personal_info) # Output: [('Charlie', 22), ('Alice', 25), ('Bob', 30)]

在上面的示例中,personal_info 是一个元组列表,其中 get_age 函数被定义为 key 函数。

这里,列表根据每个元组的 age(即第二个元素)进行排序。

同时使用两个参数的排序示例

我们可以使用 keyreverse 参数来排序列表。例如,

words = ['python', 'is', 'awesome', 'and', 'fun']

# sort list on the basis of length in descending order sorted_words= sorted(words, key=len, reverse=True)
print(sorted_words) # Output: ['awesome', 'python', 'and', 'fun', 'is']

另请阅读

在结束之前,让我们测试一下你对 Python sorted() 的知识!你能解决以下挑战吗?

挑战

编写一个函数来检查给定数字列表是否按升序排序。

  • 例如,对于输入 [1, 2, 3, 4],输出应为 True
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战