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

Pythonsorted函数详细介绍及使用技巧

发布时间:2023-10-25 23:28:20

sorted函数是Python内置的一个排序函数,它可以对列表、元组、字符串等可迭代对象进行排序,并返回一个新的排序后的对象。

sorted函数的基本用法如下:

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

参数说明:

- iterable:要排序的可迭代对象,如列表、元组、字符串等。

- key:用来指定一个函数,其功能是为每个元素提供一个排序依据。如果不指定,默认为None,即直接对元素进行排序。

- reverse:用来指定是否逆序排序,默认为False,即升序排序。

示例:

>>> nums = [3, 1, 2, 5, 4]
>>> sorted(nums)
[1, 2, 3, 4, 5]
>>> sorted(nums, reverse=True)
[5, 4, 3, 2, 1]

sorted函数返回一个新的排序后的对象,并不改变原始对象。

当需要对复杂的对象进行排序时,可以通过key参数指定一个函数来提取排序依据。例如,对一个包含字典的列表按照字典中某个键排序:

>>> students = [{'name': 'Tom', 'age': 20}, {'name': 'Alice', 'age': 18}, {'name': 'Bob', 'age': 21}]
>>> sorted(students, key=lambda x: x['age'])
[{'name': 'Alice', 'age': 18}, {'name': 'Tom', 'age': 20}, {'name': 'Bob', 'age': 21}]

上述示例中,通过key参数指定了一个匿名函数lambda x: x['age'],用来提取字典中的age键作为排序依据。

此外,sorted函数还可以应用在字符串排序上:

>>> s = "cba"
>>> sorted(s)
['a', 'b', 'c']

如果需要按照自定义的排序规则对字符串进行排序,可以通过key参数指定一个函数来实现:

>>> s = "cba"
>>> sorted(s, key=lambda x: ord(x))
['a', 'b', 'c']

上述示例中,通过key参数指定了一个匿名函数lambda x: ord(x),用来将字符转换为ASCII码作为排序依据。

使用技巧:

1. sorted函数的返回值是一个新的排序后的对象,如果希望对原对象进行排序,可以使用列表的sort方法。

2. key参数可以是一个函数,也可以是一个对象的方法。例如,对一个包含对象的列表按照对象的某个属性排序:

>>> class Student:
...     def __init__(self, name, age):
...         self.name = name
...         self.age = age
... 
>>> students = [Student('Tom', 20), Student('Alice', 18), Student('Bob', 21)]
>>> sorted(students, key=lambda x: x.age)
[<__main__.Student object at 0x7f8ce31f8710>, <__main__.Student object at 0x7f8ce31f86d0>, <__main__.Student object at 0x7f8ce31f8590>]

上述示例中,通过key参数指定了一个匿名函数lambda x: x.age,用来提取对象的age属性作为排序依据。

3. sorted函数还可以比较复杂的类型,如自定义的类对象。如果希望在类中自定义排序的方式,可以实现类的__lt__(小于)方法。

>>> class Student:
...     def __init__(self, name, age):
...         self.name = name
...         self.age = age
...     def __lt__(self, other):
...         return self.age < other.age
... 
>>> students = [Student('Tom', 20), Student('Alice', 18), Student('Bob', 21)]
>>> sorted(students)
[<__main__.Student object at 0x7f8ce31f86d0>, <__main__.Student object at 0x7f8ce31f8590>, <__main__.Student object at 0x7f8ce31f8710>]

上述示例中,通过实现类的__lt__方法来定义排序的规则,然后再使用sorted函数进行排序。

总结:

sorted函数是Python中用来对可迭代对象进行排序的函数,常用的参数有iterable、key和reverse。可以通过key参数指定一个函数来提取排序依据,也可以通过对象的方法来自定义排序规则。sorted函数返回一个新的排序后的对象,不改变原始对象。