Pythonsorted函数详细介绍及使用技巧
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函数返回一个新的排序后的对象,不改变原始对象。
