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

如何在Python中使用内置的sorted函数进行列表排序

发布时间:2023-06-13 09:56:36

Python内置的sorted函数可以很方便地对一个列表进行排序。该函数的语法如下:

sorted(iterable, key=None, reverse=False)

其中,iterable表示要排序的序列,可以为列表、元组、字符串等可迭代的对象;key是一个可调用的函数,用于指定排序的关键字;reverse表示是否要进行逆序排序,可以为True或False,默认为False(即升序排序)。

下面通过一些示例来演示如何使用sorted函数进行列表排序。

1.对数字列表进行升序排序

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

sorted_numbers = sorted(numbers)

print(sorted_numbers) #[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

2.对字符串列表进行升序排序

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

sorted_words = sorted(words)

print(sorted_words) #['apple', 'banana', 'cherry', 'durian', 'eggplant']

3.按照字符串长度进行升序排序

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

sorted_words = sorted(words, key=len)

print(sorted_words) #['apple', 'cherry', 'banana', 'durian', 'eggplant']

注:key=len表示按照每个字符串的长度进行排序。

4.对元组列表按照第二个元素进行升序排序

tuples = [(2, 'apple'), (3, 'banana'), (1, 'cherry'), (5, 'durian'), (4, 'eggplant')]

sorted_tuples = sorted(tuples, key=lambda x: x[1])

print(sorted_tuples) #[(2, 'apple'), (3, 'banana'), (1, 'cherry'), (4, 'eggplant'), (5, 'durian')]

注:lambda x: x[1]表示使用元组的第二个元素作为排序关键字。

5.对字典列表按照字典的某个值进行降序排序

dictionaries = [{'name': 'Alice', 'score': 90}, {'name': 'Bob', 'score': 80},

                {'name': 'Cathy', 'score': 70}, {'name': 'David', 'score': 85}]

sorted_dictionaries = sorted(dictionaries, key=lambda x: x['score'], reverse=True)

print(sorted_dictionaries) #[{'name': 'Alice', 'score': 90}, {'name': 'David', 'score': 85},

                            {'name': 'Bob', 'score': 80}, {'name': 'Cathy', 'score': 70}]

注:key=lambda x: x['score']表示按照字典的score键进行排序,reverse=True表示进行降序排序。

在使用sorted函数进行列表排序时需要注意的一些问题:

1.如果列表中的元素不支持比较操作(如字符串和数字的混合列表),则会抛出TypeError异常。

2.如果要进行自定义的复杂排序,可以使用key参数来指定关键字函数。

3.使用sorted函数进行排序时,不会改变原列表,而是返回一个新的排序后的列表。

4.如果要对列表本身进行排序,可以直接使用列表的sort方法。该方法和sorted函数的用法类似。