排序是指根据元素上的比较运算符重新排列元素的给定序列。比较运算符用于确定相应数据结构中元素的新顺序。
例如:下面的字符列表按其ASCII值的升序排列。也就是说,ASCII值较小的字符将比ASCII值较高的字符优先放置。
在Python中,对任何序列进行排序非常容易,因为它提供了内置的排序方法。两种这样的方法是sorted()
和sort()
。这两种方法用于排序,但是它们各自的方式有很大不同。让我们一一看一下。
sorted()
sorted()
方法将给定序列按升序或降序排序,并始终返回已排序的列表。此方法不影响原始序列。
用法: sorted(iterable, key, reverse=False)
参数:
Iterable:序列(列表,元组,字符串)或集合(字典,集合,frozenset)或任何其他需要排序的迭代器。
Key(optional):用作键或排序比较基础的函数。
Reverse(optional):如果设置为True,则可迭代项将以反向(降序)排序,默认情况下将其设置为False。
返回类型:返回排序列表。
范例1:
# Python program to demonstrate
# sorted()
L = [1, 2, 3, 4, 5]
print("Sorted list:")
print(sorted(L))
print("\nReverse sorted list:")
print(sorted(L, reverse = True))
print("\nOriginal list after sorting:")
print(L)
输出:
Sorted list: [1, 2, 3, 4, 5] Reverse sorted list: [5, 4, 3, 2, 1] Original list after sorting: [1, 2, 3, 4, 5]
范例2:排序不同的数据类型
# Python program to demonstrate
# sorted()
# List
x = ['q', 'w', 'r', 'e', 't', 'y']
print(sorted(x))
# Tuple
x = ('q', 'w', 'e', 'r', 't', 'y')
print(sorted(x))
# String-sorted based on ASCII translations
x = "python"
print(sorted(x))
# Dictionary
x = {'q':1, 'w':2, 'e':3, 'r':4, 't':5, 'y':6}
print(sorted(x))
# Set
x = {'q', 'w', 'e', 'r', 't', 'y'}
print(sorted(x))
输出:
['e', 'q', 'r', 't', 'w', 'y'] ['e', 'q', 'r', 't', 'w', 'y'] ['h', 'n', 'o', 'p', 't', 'y'] ['e', 'q', 'r', 't', 'w', 'y'] ['e', 'q', 'r', 't', 'w', 'y']
使用关键参数
此可选参数键具有其函数的函数。此键函数在排序之前转换每个元素,它获取值并返回1个值,该值随后在排序中使用,而不是原始值。
例:假设我们要根据字符串的长度对字符串列表进行排序。这可以通过传递len()
作为键参数的值。下面是实现。
# Python program to demonstrate
# sorted()
L = ['aaaa', 'bbb', 'cc', 'd']
# sorted without key parameter
print(sorted(L))
print()
# sorted with key parameter
print(sorted(L, key = len))
输出:
['aaaa', 'bbb', 'cc', 'd'] ['d', 'cc', 'bbb', 'aaaa']
sort()
sort()
函数与sorted()非常相似,但与排序不同,它不返回任何内容并对原始序列进行更改。此外,sort()是列表类的一种方法,只能与列表一起使用。
用法: List_name.sort(key, reverse=False)
参数:
key:用作排序比较键的函数。
reverse:如果为true,则列表按降序排序。
返回类型:没有
范例1:
# Python program to demonstrate
# sort()
# List of Integers
numbers = [1, 3, 4, 2]
# Sorting list of Integers
numbers.sort()
print(numbers)
# List of Floating point numbers
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
# Sorting list of Floating point numbers
decimalnumber.sort()
print(decimalnumber)
# List of strings
words = ["Geeks", "For", "Geeks"]
# Sorting list of strings
words.sort()
print(words)
输出:
[1, 2, 3, 4] [1.68, 2.0, 2.01, 3.28, 3.67] ['For', 'Geeks', 'Geeks']
范例2:反向排序。
# Python program to demonstrate
# sort()
# List of Integers
numbers = [1, 3, 4, 2]
# Sorting list of Integers
numbers.sort(reverse = True)
print(numbers)
# List of Floating point numbers
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
# Sorting list of Floating point numbers
decimalnumber.sort(reverse = True)
print(decimalnumber)
# List of strings
words = ["Geeks", "For", "Geeks"]
# Sorting list of strings
words.sort(reverse = True)
print(words)
输出:
[4, 3, 2, 1] [3.67, 3.28, 2.01, 2.0, 1.68] ['Geeks', 'Geeks', 'For']
范例3:使用关键参数。
# Python program to demonstrate sorting by user's
# choice
# function to return the second element of the
# two elements passed as the parameter
def sortSecond(val):
return val[1]
# list1 to demonstrate the use of sorting
# using using second key
list1 = [(1, 2), (3, 3), (1, 1)]
# sorts the array in ascending according to
# second element
list1.sort(key = sortSecond)
print(list1)
# sorts the array in descending according to
# second element
list1.sort(key = sortSecond, reverse = True)
print(list1)
输出:
[(1, 1), (1, 2), (3, 3)] [(3, 3), (1, 2), (1, 1)]
相关用法
注:本文由纯净天空筛选整理自nikhilaggarwal3大神的英文原创作品 Python – Difference between sorted() and sort()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。