Python中的sorted函数:用于对列表按特定键进行排序
Python是一种面向对象程序设计语言,具有简单易学、代码优美、运行速度快等特点。Python中有许多有用的内置函数,如sorted函数,可以利用这些工具来简单、快速地编写高效的程序。
sorted()函数是Python内置的排序函数,用于对列表按特定键进行排序,也可以是元组、字典等序列进行排序。sorted()函数的操作会返回一个已经排好序的序列,而原来的序列不会受到影响。
用法:
sorted(iterable[, key][, reverse])
参数:
- iterable:表示可迭代对象,如列表、元组、字符串等。
- key:用来指定一个函数,该函数用作排序的键。
- reverse:用来指定排序顺序,是顺序排列(默认值为False,即升序),还是逆序排列(值为True,即降序)。
示例:
以下是对一个列表按照整数大小排序的例子:
a = [3,4,8,9,1,2,5,6,7] print(sorted(a)) # 输出为:[1, 2, 3, 4, 5, 6, 7, 8, 9]
sorted()函数不仅可以对基本数据类型进行排序,还可以对对象进行排序。
示例:
以下是按照人的年龄进行排序的例子:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return repr((self.name, self.age))
people = [Person('Bob', 35), Person('Alice', 25), Person('Tom', 50)]
print(sorted(people, key=lambda person: person.age))
# 输出结果为:[('Alice', 25), ('Bob', 35), ('Tom', 50)]
上述例子中,我们定义了Person类,包含了name和age两个属性,我们使用lambda表达式对people列表中的元素进行排序,其中key参数指定了按照对象的age属性作为排序关键字。
除此之外,sorted()函数还能够对字符串进行排序:
names = ['Bob', 'Abby', 'Charlie', 'David', 'Eva'] print(sorted(names)) # 输出结果为:['Abby', 'Bob', 'Charlie', 'David', 'Eva']
从结果来看,sorted()函数默认按照字母表顺序进行排序(从小到大)。如果要按照逆序排列,则传入reverse=True参数:
names = ['Bob', 'Abby', 'Charlie', 'David', 'Eva'] print(sorted(names, reverse=True)) # 输出结果为:['Eva', 'David', 'Charlie', 'Bob', 'Abby']
上述例子中,我们通过传入reverse=True参数,将结果逆序输出。
sorted()函数还可以接受另一个列表作为参数。这个用法相当于使用一个列表来排序另一个列表。下面是一个例子:
a = [1, 3, 5, 7, 9] b = [0, 2, 4, 6, 8] print(sorted(a+b)) # 输出结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
无论是对简单的列表、元组、字符串,还是对自定义类对象进行排序,sorted()函数都能够帮我们轻松实现按照指定键进行排序,提高代码执行效率,因此,它是一个非常常用、非常有用的工具。
