内置函数 `sorted()` 返回给定可迭代对象的排序列表。排序可以是升序或降序。如果可迭代对象是字符串,它会按字母顺序排序;如果是数字,则按数字顺序排序。如果可迭代对象同时包含字符串和数字,则无法排序。
sorted(iterable, key=None, reverse=False) #where iterable may be string, tuple, list,set, dictionary frozen set)
接受三个参数。根据键函数返回的值,我们可以按如下方式对给定可迭代对象进行排序:
sorted(iterable, key=len)
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| 可迭代对象 | 一个序列(字符串、元组、列表)或集合(集合、字典、冻结集合)或任何其他迭代器。 | 必需 |
| reverse | 如果为 True,则排序后的列表将反转(或按降序排序)。如果未提供,默认为 False。 | 可选 |
| 键 | 一个用作排序比较键的函数。默认为 None。 | 可选 |
此 sorted() 方法类似于 sort(),区别在于 sort() 不返回任何值。
| 输入 | 返回值 |
|---|---|
| 可迭代对象 | 排序列表 |
# vowels list pyth 'a', 'u', 'o', 'i']
print(sorted(python_list))
# string pyth
print(sorted(python_string))
# vowels tuple pyth 'a', 'u', 'o', 'i')
print(sorted(python_tuple))
输出
['a', 'e', 'i', 'o', 'u'] ['P', 'h', 'n', 'o', 't', 'y'] ['a', 'e', 'i', 'o', 'u']
# set pyth 'a', 'u', 'o', 'i'}
print(sorted(python_set, reverse=True))
# dictionary pyth 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5}
print(sorted(python_dict, reverse=True))
# frozen set
frozen_set = frozenset(('e', 'a', 'u', 'o', 'i'))
print(sorted(frozen_set, reverse=True))
输出
['u', 'o', 'i', 'e', 'a'] ['u', 'o', 'i', 'e', 'a'] ['u', 'o', 'i', 'e', 'a']
# take the second element for sort
def take_second(elem):
return elem[1]
# random list
randomnum = [(2, 2), (3, 4), (4, 1), (1, 3)]
# sort list with key
sorted_keylist = sorted(randomnum, key=take_second)
# print list
print('Sorted list:', sorted_keylist)
输出
Sorted list: [(4, 1), (2, 2), (1, 3), (3, 4)]
# Nested list of student's info in a Science Olympiad
# List elements: (Student's Name, Marks out of 100, Age)
student_list = [
('Alison', 50, 18),
('Terence', 75, 12),
('David', 75, 20),
('Jimmy', 90, 22),
('John', 45, 12)
]
输出
[('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12)]