欢迎访问宙启技术站
智能推送

Python中的sorted()函数如何用来对列表排序?

发布时间:2023-12-12 20:47:11

在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参数来进行逆序排序。