当前位置:   article > 正文

一文弄懂Python中的sort和sorted函数_python中arr.sort和sorted

python中arr.sort和sorted

1. 引言

Python中的 sort()sorted()函数主要用于按升序或降序对数据进行排序。在本文中比较用于列表时,两个函数在编程和语法上的差异。

闲话少说,我们直接开始吧!

2. Sort()函数基本用法

用于列表排序的sort函数的语法如下:

list.sort(reverse=False, key=None)

用法如下:

  • 参数reverse:默认为False。如果reverse=True,则数据将按降序排列。
  • 参数key: 默认为None。我们可以指定一个用户定义的函数来自定义排序。

2.1 样例一之基本排序

我们首先尝试使用上述默认参数来看个事例,样例代码如下:

# Original List
typ_data = ['$', '45', '3j+5', 'Hello']
print(f'Original Data: {typ_data}')

# Sorting the list
typ_data.sort()
# Printing sorted list
print(f'Sorted Data: {typ_data}')

----------
Original Data: ['$', '45', '3j+5', 'Hello']
Sorted Data: ['$', '3j+5', '45', 'Hello']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

可以知道上述结果按照字符串首字符的ASCII码进行升序排序。

2.2 样例二之用户自定义排序函数

有时间我们需要按照用户自定义的函数来对列表进行排序,相应的代码示例如下:

# List containing dictionary data
data = [
    {'fruit': 'strawberry', 'price': 100},
    {'fruit': 'banana', 'price': 91},
    {'fruit': 'mango', 'price': 132},
    {'fruit': 'cherry', 'price': 82},
]

print(f'Original Data: {data}')

# Function for sorting by key 'price'
def sort_dict_by_price(item):
    return item['price']

# Sorting data using the user-defined sorting function
data.sort(key=sort_dict_by_price)
print('-'*20)
# Printing the data
print(f'Sorted Data: {data}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行结果如下:

Original Data: [{'fruit': 'strawberry', 'price': 100}, {'fruit': 'banana', 'price': 91}, {'fruit': 'mango', 'price': 132}, {'fruit': 'cherry', 'price': 82}]
--------------------
Sorted Data: [{'fruit': 'cherry', 'price': 82}, {'fruit': 'banana', 'price': 91}, {'fruit': 'strawberry', 'price': 100}, {'fruit': 'mango', 'price': 132}]
  • 1
  • 2
  • 3

上述代码中,我们通过编写一个名为sort_dict_by_price的函数,它接受我们的字典本身作为输入,并返回键“price”的值。将此函数已传递给函数sort的参数key,该参数将根据价格按升序对数据进行排序。

3. Sorted()函数基本用法

用于列表排序的sorted函数的语法如下:

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

用法如下:

  • 参数iterable: 必需。输入任何可迭代数据
  • 参数key: 默认为“None”。指定排序条件。
  • 参数reverse: 默认为False。当设置为True时,数据将按降序排列。

3.1 样例一之基本排序

Python中的sorted()函数用于对可迭代数据进行排序。默认情况下,此函数按升序对数据进行排序。

我们当然也可以使用sorted函数来对各种类型的数据进行排序,样例代码如下:

list_data = [43, 21, 2, 34]
print(f'Sorted List: {sorted(list_data)}')

# Seperator
print('-'*20)

tuple_data = (('x', 3), ('w', 1), ('1', 4))
print(f'Sorted Tuple: {sorted(tuple_data)}')

# Seperator
print('-'*20)

dict_data = {9: 'G', 1: 'V', 4: 'E'}
print(f'Sorted Dictionary Keys: {sorted(dict_data)}')
print(f'Sorted Dictionary Values: {sorted(dict_data.values())}')
print(f'Sorted Dictionary Items: {sorted(dict_data.items())}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

结果如下:

Sorted List: [2, 21, 34, 43]
--------------------
Sorted Tuple: [('1', 4), ('w', 1), ('x', 3)]
--------------------
Sorted Dictionary Keys: [1, 4, 9]
Sorted Dictionary Values: ['E', 'G', 'V']
Sorted Dictionary Items: [(1, 'V'), (4, 'E'), (9, 'G')]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2 样例二之用户自定义排序函数

我们同样也可以通过将自定义排序函数传递给函数sorted()来实现相应的排序功能,举例如下:

# Tuple data
tuple_data = (
    ('Mango', 25),
    ('Walnut', 65),
    ('Cherry', 10),
    ('Apple', 68),
)

print(f'Original: {tuple_data}')
# Separator
print('-'*20)

# Function for grabbing 2nd item from the data
def sorting_tup_data(item):
    return item[1]

# Sorting based on sorting criteria in descending order
sorting = sorted(tuple_data, key=sorting_tup_data, reverse=True)
print(f'Sorted: {sorting}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

结果如下:

Original: (('Mango', 25), ('Walnut', 65), ('Cherry', 10), ('Apple', 68))
--------------------
Sorted: [('Apple', 68), ('Walnut', 65), ('Mango', 25), ('Cherry', 10)]
  • 1
  • 2
  • 3

上述代码中,由于在传递自定义函数时使用了参数key,因此元组是根据第二项进行排序的;同样由于我们将参数reverse设置为True,此时输出的数据是按降序排序输出的。

4. 总结

我们已经看到了用于列表中的sort()sorted()函数的对比,同样我们给出了相应的代码示例,进而了解这些函数是如何工作的。简而言之,这两个函数都用于对数据进行排序,但函数sort()只对Python列表进行排序,而sorted()函数用于对可迭代数据进行排序。

对以上进行总结如下:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/491286
推荐阅读
相关标签
  

闽ICP备14008679号