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

Python中的列表排序函数有哪些及其用法

发布时间:2023-06-22 09:34:57

Python中的列表排序是非常常用的操作,它可以让我们很方便地对列表进行排序。在Python中,我们有很多种列表排序函数可以使用,本文将会介绍其中比较常用的几种列表排序函数及其用法。

一、列表的sort()函数

sort()函数是Python内置函数之一,其作用是对列表进行排序。sort()函数本身不返回任何值,它会直接修改列表。sort()函数有两个可选参数,reverse和key。

reverse参数表示排序规则是升序还是降序,当其为True时,表示降序;当其为False时,表示升序。默认值为False。

key参数表示排序的关键字,即用来比较的元素。该参数需要一个函数作为输入,这个函数会返回用来排序的关键字。默认值为None。

使用示例:

numbers = [3,1,4,1,5,9,2,6,5,3,5]

numbers.sort()  # 默认升序

print(numbers)  # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

numbers.sort(reverse=True)  # 降序

print(numbers)  # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

words = ['apple','banana','cherry','durian','fig','eggplant']

words.sort(key=len)  # 按照字符串长度排序

print(words)  # 输出:['fig', 'apple', 'banana', 'durian', 'cherry', 'eggplant']

二、列表的sorted()函数

sorted()函数是Python内置函数之一,其作用是对列表进行排序,并返回一个新的有序列表。sorted()函数与sort()函数的不同之处在于,sorted()函数不会修改原来的列表,而是返回一个新的有序列表。与sort()函数一样,sorted()函数也有reverse和key两个可选参数。

使用示例:

numbers = [3,1,4,1,5,9,2,6,5,3,5]

new_numbers = sorted(numbers)  # 默认升序

print(numbers)  # 原来的列表不变,输出:[3,1,4,1,5,9,2,6,5,3,5]

print(new_numbers)  # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

new_numbers = sorted(numbers,reverse=True)  # 降序

print(new_numbers)  # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

words = ['apple','banana','cherry','durian','fig','eggplant']

new_words = sorted(words,key=len)  # 按照字符串长度排序

print(words)  # 原来的列表不变,输出:['apple','banana','cherry','durian','fig','eggplant']

print(new_words)  # 输出:['fig', 'apple', 'banana', 'durian', 'cherry', 'eggplant']

三、列表的reverse()函数

reverse()函数是Python内置函数之一,其作用是将列表中的元素进行反转。reverse()函数本身不返回任何值,它会直接修改列表。

使用示例:

numbers = [3,1,4,1,5,9,2,6,5,3,5]

numbers.reverse()

print(numbers)  # 输出:[5, 3, 5, 6, 2, 9, 5, 1, 4, 1, 3]

words = ['apple','banana','cherry','durian','fig','eggplant']

words.reverse()

print(words)  # 输出:['eggplant', 'fig', 'durian', 'cherry', 'banana', 'apple']

四、列表的sort()或sorted()函数中使用lambda表达式

以上介绍的sort()和sorted()函数中的key参数可以用来指定排序的关键字,以决定排序的方式。如果不使用key参数,将默认比较元素的大小,例如在整数列表中将按数字顺序排序,而在字符串列表中将按字母表顺序排序。但如果列表中的元素是复杂对象,则可能需要指定用来比较对象的属性。为了解决这个问题,Python提供了一个lambda表达式。

lambda表达式是一个简单的函数,它只包含一个表达式,该表达式的结果自动成为函数的返回值。lambda表达式可以用在sort()和sorted()函数的key参数中。

使用示例:

students = [('Alice', 18), ('Bob', 20), ('Chris', 19), ('David', 21)]

students.sort(key=lambda s: s[1])  # 按照年龄排序

print(students)  # 输出:[('Alice', 18), ('Chris', 19), ('Bob', 20), ('David', 21)]

以上就是Python中常用的列表排序函数及其用法。无论是对数值型还是字符串型的列表进行排序,sort()和sorted()函数都是非常方便好用的,关键是要记住这两个函数的区别:sort()会修改原列表,而sorted()会产生一个新列表。