Python中的列表排序函数有哪些及其用法
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()会产生一个新列表。
