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

利用Python的sorted函数对列表进行排序的方法?

发布时间:2023-06-19 20:49:46

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程序更高效地处理各种排序需求。