本文介绍如何在Python中对列表进行排序。使用Python时,对数据进行排序是最常见的任务之一,例如,您可能想按名称对团队成员列表进行排序,或按优先级对项目列表进行排序,以下就讲解这方面的内容。安装Python参考:在Deepin系统中采用源码安装Python 3.9版本的方法。
Python sort()和sorted() 在Python中,您可以使用内置的list.sort()方法或内置的sorted()函数对列表进行排序。 sorted()函数创建一个新的排序列表,而list.sort()方法对列表进行适当排序。如果要保留,则未排序列表使用sorted()函数,另一个区别是sorted()函数可用于任何可迭代对象。 sort()和sorted()的语法如下: list.sort(key=function, reverse=Boolean) sorted(iterable, key=function, reverse=Boolean) 可选关键字参数key和reverse具有以下含义: key-在比较之前接受一个参数并将其转换的函数,该函数必须返回一个用于排序比较的值。 reverse-反向的值可以为True或False,默认值是true,当此参数设置为false时,列表以相反的顺序排序。 使用“小于”(<)运算符比较列表中的元素,并按升序排序。<运算符不支持将字符串与整数进行比较,因此,如果您的列表包含字符串和整数,则排序操作将失败。 以下示例显示如何按字母顺序对字符串列表进行排序: directions = ["north", "east", "south", "west"] directions.sort() print('Sorted list:', directions) 返回: Sorted list: ['east', 'north', 'south', 'west'] 如果要保持原始列表不变,请使用sorted()函数: directions = ["north", "east", "south", "west"] sorted_directions = sorted(directions) print('Sorted list:', sorted_directions) 返回: Sorted list: ['east', 'north', 'south', 'west'] 要以相反的顺序(降序)对列表进行排序,请将reverse参数设置为True: directions = ["north", "east", "south", "west"] directions.sort(reverse=True) print('Sorted list:', directions) 返回: Sorted list: ['west', 'south', 'north', 'east']
按功能排序 key参数接受一个函数,并允许您执行更复杂的排序操作。 最简单的示例是根据元素的长度对其进行排序: directions = ["Arya", "Daenerys", "Jon", "Brienne"] directions.sort(key=len) print('Sorted list:', directions) 我们使用len()函数返回字符串中的字符数,该字符串用作比较器: Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys'] 您还可以创建一个自定义函数并将其用作比较的关键参数,这是显示如何根据整数之和对整数列表进行排序的示例: def sum_digits(num): digits = [int(x) for x in str(num)] return sum(digits) numbers = [23, 77, 19, 310, 219] numbers.sort(reverse=True, key=sum_digits) print('Sorted list:', numbers) 返回: Sorted list: [77, 219, 19, 23, 310] 另一个示例是使用key参数对复杂列表进行排序,例如元组列表: numbers = [(3, 14), (1, 61), (2, 71)] numbers.sort(key=lambda k: k[0]) print('Sorted list:', numbers) 我们正在使用一个匿名(lambda)函数,该函数返回元组的第一个元素,该列表按功能返回的值排序: Sorted list: [(1, 61), (2, 71), (3, 14)] 可以使用相同的方法对词典列表进行排序: elements = [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, ] elements.sort(key=lambda k: k['name']) print('Sorted list:', elements) lambda函数返回名称键的值,该值用于比较: Sorted list: [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'} ] 排序复杂功能的更好,更快的方法是使用操作员模块功能,这是一个例子: from operator import itemgetter elements = [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, ] elements.sort(key=itemgetter('symbol')) print('Sorted list:', elements) itemgetter函数获取键符号的值: Sorted list: [ {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, {'name': 'Germanium', 'number': 25, 'symbol': 'ge'} ]
结论 我们已经向您展示了如何使用sort()方法和sorted()函数在Python中对列表进行排序,加以实践下就可以很好的理解了。
相关主题 |