Python 排序列表——如何按降序或升序排序
在 Python 中,您可以使用sorted()
方法或sort()
方法对数据进行排序。在本文中,我将提供sorted()
和sort()
方法的代码示例并解释两者之间的区别。
Python sort() 方法
此方法接受一个列表并对其进行排序。此方法没有返回值。
在这个例子中,我们有一个数字列表,我们可以使用该sort()方法按升序对列表进行排序。
my_list = [67, 2, 999, 1, 15]
# this prints the unordered list
print("Unordered list: ", my_list)
# sorts the list in place
my_list.sort()
# this prints the ordered list
print("Ordered list: ", my_list)
如果列表已经排序,那么它将在控制台中返回 None 。
my_list = [6, 7, 8, 9, 10]
# this will return None because the list is already sorted
print(my_list.sort())
该sort()
方法可以接受两个可选参数,称为key
和reverse
。
key
具有将在列表中的每个项目上调用的函数的值。
在这个例子中,我们可以使用len()
函数作为key
参数的值。key=len
将告诉计算机按长度从最小到最大对名称列表进行排序。
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(key=len)
print("Sorted: ", names)
reverse
为一个布尔值True
或者 False
。
在这个例子中,reverse=True
将告诉计算机以逆字母顺序对列表进行排序。
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(reverse=True)
print("Sorted: ", names)
Python sorted() 方法
此方法将从可迭代对象返回一个新的排序列表。可迭代对象的示例包括列表、字符串和元组。
sort()
和sorted()
之间的一个主要区别是sorted()
将返回一个新列表,同时sort()
对列表进行排序。
在这个例子中,我们有一个将按升序排序的数字列表。
sorted_numbers = sorted([77, 22, 9, -6, 4000])
print("Sorted in ascending order: ", sorted_numbers)
该sorted()
方法还接受可选key
和reverse
参数。
在这个例子中,我们有一个按降序排序的数字列表。reverse=True
告诉计算机将列表从最大到最小反转。
sorted_numbers = sorted([77, 22, 9, -6, 4000], reverse=True)
print("Sorted in descending order: ", sorted_numbers)
sorted()
和之间的另一个主要区别sort()
是该sorted()
方法接受任何可迭代对象,而该sort()
方法仅适用于列表。
在此示例中,我们使用split()
方法将字符串分解为单个单词。然后我们使用sorted()
从最小到最大的长度对单词进行排序。
my_sentence = "Jessica found a dollar on the ground"
print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len))
我们还可以修改此示例并包含key
和reverse
参数。
这个修改后的示例现在将从最大到最小对列表进行排序。
my_sentence = "Jessica found a dollar on the ground"
print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len, reverse=True))
我们也可以使用 sorted()
上的方法tuples
。
在这个例子中,我们有一个tuples代表乐队学生姓名、年龄和乐器的集合。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
我们可以使用该sorted()
方法按学生的年龄对这些数据进行排序。该key
可以传入一个lambda
函数,告诉计算机按年龄进行升序排序。
一个lambda
函数是一个没有名称的匿名函数。您可以使用lambda
关键字定义这种类型的函数。
lambda student: student[1]
要访问 a
中的值tuple
,请使用括号表示法和要访问的索引号。由于我们从零开始计数,因此年龄值为[1]。
这是完整的示例。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[1]))
我们可以修改此示例并改为按仪器对数据进行排序。我们可以使用reverse
的逆字母顺序对工具进行排序。
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[2], reverse=True))
小结
以上就是该文章的全部内容了,后续python学习内容可以继续关注猿笔记。