Python的sorted函数——排序一个迭代器
sorted函数是Python内置的一个高阶函数。它可以用于排序任何可迭代对象,包括列表、元组、集合等。
sorted函数的基本语法如下:
sorted(iterable, *, key=None, reverse=False)
其中,iterable是排序的可迭代对象,key是一个函数,用于指定排序的关键字,reverse用于指定是否逆序排序。sorted函数返回排序后的列表。
下面我们将利用sorted函数来排序多个实际的例子。
###例一:排序数字列表
我们可以用sorted函数来排序一个数字列表。例如,我们要将一个列表[3, 1, 4, 1, 5, 9, 2]按照从小到大的顺序排序,可以使用如下代码:
nums = [3, 1, 4, 1, 5, 9, 2] sorted_nums = sorted(nums) print(sorted_nums) # 输出:[1, 1, 2, 3, 4, 5, 9]
也可以将列表按照从大到小的顺序排序,只需要将reverse参数设置为True即可:
nums = [3, 1, 4, 1, 5, 9, 2] sorted_nums = sorted(nums, reverse=True) print(sorted_nums) # 输出:[9, 5, 4, 3, 2, 1, 1]
###例二:排序字符串
我们也可以用sorted函数来排序一个字符串。例如,我们要将一个字符串"hello,world"按照字母顺序排序,可以使用如下代码:
word = "hello,world" sorted_word = sorted(word) print(sorted_word) # 输出:[',', 'd', 'e', 'h', 'l', 'l', 'o', 'r', 'w']
注意,sorted函数将字符串拆分为了单个字符,所以输出结果也是一个字符列表。如果我们要将字符按照从小到大的顺序组成一个新字符串,可以使用join函数:
word = "hello,world" sorted_word = ''.join(sorted(word)) print(sorted_word) # 输出:',dehllorw'
###例三:按照字符串长度排序
如果我们要将一个字符串列表按照字符串长度从短到长排序,可以使用sorted函数和key参数。例如,我们要将一个字符串列表["apple", "banana", "orange", "grape"]按照字符串长度排序,可以使用如下代码:
fruits = ["apple", "banana", "orange", "grape"] sorted_fruits = sorted(fruits, key=len) print(sorted_fruits) # 输出:['apple', 'grape', 'banana', 'orange']
这里的key参数指定了一个函数len,表示按照字符串长度排序。
###例四:按照元组中的数字排序
如果我们有一个元组列表,每个元素是一个数字和一个字符串,例如[(3, "apple"), (1, "banana"), (4, "orange"), (2, "grape")],我们想按照数字从小到大排序,可以使用sorted函数和lambda函数。代码如下:
fruits = [(3, "apple"), (1, "banana"), (4, "orange"), (2, "grape")] sorted_fruits = sorted(fruits, key=lambda x: x[0]) print(sorted_fruits) # 输出:[(1, 'banana'), (2, 'grape'), (3, 'apple'), (4, 'orange')]
这里的key参数指定了一个lambda函数,它取每个元素的 个数字作为排序关键字。
###总结
通过这些例子,我们可以看到sorted函数的用途非常广泛,可以用于排序各种可迭代的对象。掌握它可以帮助我们更加灵活地处理各种数据。
