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

Python内置函数之Sort和Sorted的使用方法及区别

发布时间:2023-07-06 07:56:32

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函数会返回排序后的新列表。