c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python中的sorted怎么使用

更新时间:2023-10-23

sorted()函数的基本使用

sorted()函数是Python内置的一个高阶函数,用于对可迭代对象进行排序。

它的基本用法是:sorted(iterable, key=None, reverse=False)。

其中,iterable表示要进行排序的可迭代对象;key表示排序的关键字,它接受一个函数作为参数,用来指定参与排序比较的元素;reverse表示是否要按倒序排序,默认为升序。

# 对列表进行排序
l = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_l = sorted(l)
print(sorted_l)  # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 对元组进行排序
t = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
sorted_t = sorted(t)
print(sorted_t)  # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 对字典进行排序(返回的是排序后的元素列表)
d = {'b': 3, 'a': 1, 'c': 2}
sorted_d = sorted(d.items(), key=lambda x: x[0])
print(sorted_d)  # [('a', 1), ('b', 3), ('c', 2)]

按字符串长度排序

在实际应用中,我们可能需要对一个字符串列表按照字符串的长度进行排序。这时可以使用key参数指定一个函数,该函数返回字符串的长度。

words = ['apple', 'banana', 'orange', 'kiwi', 'grape']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # ['kiwi', 'grape', 'apple', 'banana', 'orange']

按多个字段排序

有时候需要按照多个字段进行排序,可以使用lambda函数返回一个元组,元组中包含需要排序的多个字段。

students = [
    {'name': 'Alice', 'age': 20, 'score': 90},
    {'name': 'Bob', 'age': 18, 'score': 80},
    {'name': 'Chris', 'age': 22, 'score': 85},
    {'name': 'David', 'age': 21, 'score': 90},
]

sorted_students = sorted(students, key=lambda x: (x['score'], x['age']), reverse=True)
print(sorted_students)
"""
[{'name': 'Alice', 'age': 20, 'score': 90},
 {'name': 'David', 'age': 21, 'score': 90},
 {'name': 'Chris', 'age': 22, 'score': 85},
 {'name': 'Bob', 'age': 18, 'score': 80}]
"""

结合列表推导式对列表排序

除了使用sorted()函数,还可以结合列表推导式对列表进行排序。

l = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_l = [x for x in l if x % 2 == 0]  # 筛选出偶数
print(new_l)  # [4, 2, 6]

sorted_l = sorted([x for x in l if x % 2 == 0])
print(sorted_l)  # [2, 4, 6]

sorted()函数是Python内置的排序函数,使用方便灵活,可以根据实际情况灵活使用其中的参数进行排序,是Python语言的一个强大工具。