Python中的sorted()函数如何用来对列表排序?
在Python中,可以使用内置的sorted()函数对列表进行排序。sorted()函数接受一个可迭代对象作为参数,例如列表,并返回一个新的已排序的列表。
对于数字列表,sorted()函数将默认按照数字大小进行排序。对于字符串列表,默认按照字母顺序进行排序。对于混合类型的列表,会抛出一个类型错误。
sorted()函数有两种用法:一种是直接对列表进行排序并返回新的排序列表,另一种是使用key参数来指定一个函数作为排序的关键字。
首先,让我们看看如何使用sorted()函数对列表进行基本排序:
numbers = [4, 2, 7, 5, 1, 3] sorted_numbers = sorted(numbers) print(sorted_numbers)
执行以上代码,输出结果为:
[1, 2, 3, 4, 5, 7]
可以看到,原始列表numbers没有被改变,而是返回了一个已排序的新列表sorted_numbers。
对于字符串列表的排序,效果也是类似的:
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'] sorted_fruits = sorted(fruits) print(sorted_fruits)
执行以上代码,输出结果为:
['apple', 'banana', 'cherry', 'date', 'elderberry']
可以看到,字符串列表按照字母顺序进行了排序。
如果想要按照列表中元素的某个属性进行排序,可以使用key参数来指定一个函数作为排序的关键字。这个函数将应用于列表中的每个元素,并返回一个用于排序的值。排序函数将根据这个值来进行排序。
假设我们有一个饭店的菜单列表,每个菜品都是一个字典,包含菜名和价格。我们想要按照价格对菜单进行排序:
menu = [
{'name': 'burger', 'price': 10},
{'name': 'pizza', 'price': 15},
{'name': 'salad', 'price': 8},
{'name': 'sandwich', 'price': 12}
]
sorted_menu = sorted(menu, key=lambda dish: dish['price'])
for dish in sorted_menu:
print(dish)
执行以上代码,输出结果为:
{'name': 'salad', 'price': 8}
{'name': 'burger', 'price': 10}
{'name': 'sandwich', 'price': 12}
{'name': 'pizza', 'price': 15}
可以看到,菜单按照价格从低到高进行了排序。
在key参数中,我们使用了一个lambda函数来提取每个菜品字典中的价格作为排序的关键字。
除了使用lambda函数,还可以使用普通的函数作为key参数。例如,可以定义一个函数来提取字符串列表中字符串的长度,并按照长度进行排序:
def get_length(string):
return len(string)
strings = ['apple', 'banana', 'cherry', 'date', 'elderberry']
sorted_strings = sorted(strings, key=get_length)
print(sorted_strings)
执行以上代码,输出结果为:
['date', 'apple', 'cherry', 'banana', 'elderberry']
可以看到,字符串列表按照长度从短到长进行了排序。
在使用sorted()函数时,还可以使用reverse参数来控制是否进行逆序排序。默认值为False,表示升序排序;如果设置为True,则进行降序排序。
例如,对于一个数字列表,可以将reverse参数设置为True来进行降序排序:
numbers = [4, 2, 7, 5, 1, 3] sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers)
执行以上代码,输出结果为:
[7, 5, 4, 3, 2, 1]
可以看到,数字列表按照降序排列。
综上所述,sorted()函数是Python中用来对列表进行排序的一个非常有用的函数。通过简单调用该函数,可以对数字列表、字符串列表等进行排序,并且还可以使用key参数来指定排序的关键字,使用reverse参数来进行逆序排序。
