Python内置函数之Sort和Sorted的使用方法及区别
Python内置函数中的sort和sorted都是用于对列表进行排序的方法,但是它们的使用方法和区别略有不同。
1. sort()方法:
sort()方法是列表对象的方法,调用该方法会直接修改原列表,不会返回新的排序后的列表。sort方法的使用格式为:list.sort(key=None, reverse=False)
参数说明:
- key:可选参数,用于指定排序的规则,传入一个函数,根据该函数的返回值进行排序。
- reverse:可选参数,默认False,为正序排序,设置为True时进行逆序排序。
示例代码:
numbers = [5, 2, 8, 1, 9] numbers.sort() print(numbers) # 输出:[1, 2, 5, 8, 9] numbers.sort(reverse=True) print(numbers) # 输出:[9, 8, 5, 2, 1] numbers = [5, 2, 8, 1, 9] numbers.sort(key=lambda x: x % 3) print(numbers) # 输出:[9, 1, 5, 2, 8]
需要注意的是,sort方法在原列表上进行排序,不会产生新的排序后的列表。如果希望得到新的排序后的列表,可以使用sorted函数。
2. sorted()函数:
sorted函数是一个内置函数,可以使用该函数对列表、元组、字符串等可迭代对象进行排序,它会返回排序后的新列表。sorted函数的使用格式为:sorted(iterable, key=None, reverse=False)
参数说明:
- iterable:必选参数,表示要排序的可迭代对象,如列表、元组、字符串等。
- key:可选参数,用于指定排序的规则,传入一个函数,根据该函数的返回值进行排序。
- reverse:可选参数,默认False,为正序排序,设置为True时进行逆序排序。
示例代码:
numbers = [5, 2, 8, 1, 9] sorted_numbers = sorted(numbers) print(sorted_numbers) # 输出:[1, 2, 5, 8, 9] print(numbers) # 输出:[5, 2, 8, 1, 9] sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers) # 输出:[9, 8, 5, 2, 1] sorted_numbers = sorted(numbers, key=lambda x: x % 3) print(sorted_numbers) # 输出:[9, 1, 5, 2, 8]
可以看到,sorted函数返回了一个新的排序后的列表,原列表并没有被修改。
需要注意的是,sort方法和sorted函数在排序的稳定性上有所不同。sort方法是原地排序,不保证相同元素的相对位置,而sorted函数是稳定排序,可以保留相同元素的相对位置。
综上所述,sort方法用于原地对列表进行排序,不会返回新列表,而sorted函数会返回排序后的新列表。
