利用Python的sorted函数对列表进行排序的方法?
Python内置的sorted函数是一种非常方便的方法,用于对列表进行排序。它可以快速对列表进行排序,而不需要编写复杂的代码。
sorted函数可以按照列表中每个元素的大小,使用默认的正向排序方法对列表进行排序。sorted函数还可以指定降序排序(reverse = True),以及可以使用另外的排序方法(key参数)。
下面我们将会详细介绍sorted函数的使用方法和参数选项。
1. 默认排序
如果没有给sorted函数传递任何参数,它将默认使用升序排序:
lst = [3, 2, 1, 5, 4] sorted_lst = sorted(lst) print(sorted_lst) # 输出:[1, 2, 3, 4, 5]
2. 降序排序
descending参数用于指定是否按降序进行排序,它接受一个布尔值,True表示按降序排序,False表示按升序排序(默认)。
lst = [3, 2, 1, 5, 4] sorted_lst = sorted(lst, reverse=True) print(sorted_lst) # 输出:[5, 4, 3, 2, 1]
3. 指定排序方法
sorted函数的key关键字用于指定排序方法,它接受任何一个函数,该函数将作为每个列表元素的代表,该元素排序的元素的大小将根据该函数针对该元素返回的值。
#根据第三个元素进行排序 lst = [(1, 2, 3), (3, 2, 1), (4, 1, 2)] sorted_lst = sorted(lst, key=lambda x:x[2]) print(sorted_lst) # 输出:[(3, 2, 1), (4, 1, 2), (1, 2, 3)]
key参数的传递方式还可以是一个函数。下面是对上述代码的函数实现方式:
def sort_by_third_element(r):
return r[2]
lst = [(1, 2, 3), (3, 2, 1), (4, 1, 2)]
sorted_lst = sorted(lst, key=sort_by_third_element)
print(sorted_lst)
# 输出:[(3, 2, 1), (4, 1, 2), (1, 2, 3)]
4. 多条件排序
有时候需要根据多个条件对列表进行排序。sorted函数支持对多个条件进行排序,只需在key函数中返回元组即可。
例如,以下代码将按照元素从小到大排序,如果元素相同,则基于长度排序:
lst = [ 'a', 'aa', 'bbb', 'cccc', 'dddd'] sorted_lst = sorted(lst, key=lambda x: (len(x), x)) print(sorted_lst) # 输出:['a', 'aa', 'bbb', 'cccc', 'dddd']
5. 在字典中排序
sorted函数同样可以用于按键或值对字典进行排序:
my_dict = {'apple': 10, 'banana': 20, 'pear': 5, 'orange': 30}
sorted_dict_by_key = sorted(my_dict.items(), key=lambda x: x[0])
sorted_dict_by_value = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_dict_by_key)
print(sorted_dict_by_value)
# 输出:[('apple', 10), ('banana', 20), ('orange', 30), ('pear', 5)]
# 输出:[('pear', 5), ('apple', 10), ('banana', 20), ('orange', 30)]
注意,sorted函数以列表形式返回键/值对。在这里,我们使用items()方法,它返回一个包含键/值对的元组列表。
6. 对不同类型的对象排序
可以使用sorted函数对包含不同类型的对象的列表排序。默认情况下,列表仅可以包含同一类型的元素。
例如,下面的代码将数字、字符串和元组混合在一个列表中,并按升序排序。
lst = ['h', 1, 'a', (2, 3), 4.2, 'b'] sorted_lst = sorted(lst, key=lambda x: (isinstance(x, str), isinstance(x, tuple), x)) print(sorted_lst) # 输出:[1, 4.2, (2, 3), 'a', 'b', 'h']
isinstance()函数返回一个布尔值,表示该元素是否具有指定类型。在这里,我们使用了一个元组,包含了三个元素。如果一个元素是字符串,则返回True,因为字符串是 个元素。如果它是元组,则返回True,因为元组是第二个元素。在最后,我们使用x作为第三个元素,以确保所有其他类型都以升序排列。
总结起来,sorted函数是Python编程语言中一个强大的排序工具,可以并且应该在复杂的排序场景中使用。在使用sorted函数时,应考虑排序的元素类型以及需要何种排序需求,合理指定参数,可以让我们的Python程序更高效地处理各种排序需求。
