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()
方法还有两个可选参数:reverse 和 key。
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()
方法从原始列表获取元素并返回一个包含已排序元素的新列表。原始列表保持不变。例如,
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 函数。例如,
# 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
(即第二个元素)进行排序。
我们可以使用 key 和 reverse 参数来排序列表。例如,
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']
另请阅读