龙空技术网

python内置函数reversed()和sorted()我们需要知道的区别

科雷learning 95

前言:

现时朋友们对“python模拟reversed功能”都比较重视,你们都想要剖析一些“python模拟reversed功能”的相关文章。那么小编也在网上汇集了一些对于“python模拟reversed功能””的相关资讯,希望看官们能喜欢,姐妹们快快来学习一下吧!

在Python中,reversed() 和 sorted() 是两个用于处理序列(如列表、元组,字典的key/value等)的内置函数,当然它们的功能和用途也有明显的区别。

区别功能:reversed() 是反转有序序列的顺序(如果对无序序列排序会报错,比如无序的字典和集合),而 sorted() 对有序或者无序序列都可进行排序(不光是反转排序,可指定不同的排序方式)。返回值类型:reversed() 返回一个迭代器,而 sorted() 返回一个列表list原始序列:两者都不会改变原始序列。参数:两者都接受一个可迭代对象作为参数。而sorted() 还可以接受额外的参数,如 key 和 reverse,用于定制排序行为。性能:对于大型数据集,由于 reversed() 只是简单地反转迭代器的方向,因此通常比 sorted()(它需要执行排序算法)更快。但是,如果你需要排序的数据,那么 sorted() 是必需的。用途:reversed() 通常用于需要反向迭代序列的场景,而 sorted() 用于需要按特定顺序(通常是升序或降序)处理序列元素的场景。reversed()功能

reversed() 函数返回一个反转的迭代器,它不会改变原始序列,该迭代器按相反的顺序展示原始序列中的元素。

示例

反转list数据

my_list = [1, 2, 3, 4, 5]reversed_iter = reversed(my_list)print(reversed_iter)#结果 <list_reverseiterator object at 0x10cd87e50>

reversed_iter 是一个迭代器,我们需要将其转换为列表才能直接查看其内容,输出的是倒序排列的列表。

reversed_list = list(reversed_iter)print(reversed_list) # 输出: [5, 4, 3, 2, 1]

同时因为返回的是迭代器,可用于for循环:

for i in reversed(my_list):   print(i)

注意 原始列表my_list 没有被改变

print(my_list) # 输出: [1, 2, 3, 4, 5]

如果传入的是非有序序列,比如传入集合,程序会报错:

my_set = {5, 1, 4, 2, 3}reversed_iter = reversed(my_set)#报错TypeError: 'set' object is not reversible
sorted()

sorted() 函数返回一个新的已排序的列表list,它也不会改变原始序列。你可以对任何可迭代对象进行排序,并可以选择一个排序关键字函数,根据你的排序规则进行排序

sorted()函数有三个参数:

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

iterable(必需):

要排序的可迭代对象(如列表、元组、字符串、集合、字典的键等)。

如果传入的是字典,则默认按字典的键进行排序,除非指定了 key 参数。

key(可选):

一个函数,用于从每个输入元素中提取一个比较键(例如,根据字符串的长度、列表中元素的某个属性等)。它应该接受一个参数,并返回一个用于排序的值。

例如,你可以使用 key=len 来根据字符串的长度对字符串列表进行排序。对于复杂的排序需求,你可以定义自己的函数作为 key 参数。

reverse(可选):

一个布尔值,指定排序是升序(False)还是降序(True)。默认为 False(升序)。

示例

正序和倒序排列集合

my_set = {5, 1, 4, 2, 3}new_set = sorted(my_set)new_set_reverse = sorted(my_set,reverse=True)print(f'按照正序排列 {new_set}')print(f'按照倒序序排列 {new_set_reverse}')#结果按照正序排列 [1, 2, 3, 4, 5]按照倒序序排列 [5, 4, 3, 2, 1]

给定key参数,按照key函数规则排序

1) 给定key=len,根据字符串长度排序

name = ['apple','pea','banana']sorted_items = sorted(name, key=len)print(sorted_items)#结果['pea', 'apple', 'banana']

2) 给字典的value排序:为了按值排序并获取相应的键值对,通常使用 sorted() 与字典的 items() 或 values() 方法结合

下面给定的key=lambda x: x[1])意思是通过items()获取的键值对元组,通过lambda匿名函数拿到第2个元素,也就是字典的value,然后按照value进行排序。

d = {'a': 3, 'b': 2, 'c': 1, 'd': 4}sorted_items =dict(sorted(d.items(), key=lambda x: x[1]))print(sorted_items)#结果{'c': 1, 'b': 2, 'a': 3, 'd': 4}

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习和关注,谢谢大家。

标签: #python模拟reversed功能