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

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

区别

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

reversed()功能

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(iterablekey=Nonereverse=False)

1 iterable(必需):

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

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

2 key(可选):

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

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

3 reverse(可选):

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

sorted函数示例

正序和倒序排列集合

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}

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

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

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

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

### 回答1: Python中的reversed和sorted是两个常用的函数。 reversed函数可以将一个序列反转,返回一个反转后的迭代器对象。例如,reversed([1,2,3])返回的是一个迭代器对象,其元素为3,2,1。 sorted函数可以对一个序列进行排序,返回一个新的排序后的列表。例如,sorted([3,1,2])返回的是一个列表,其元素为1,2,3。 需要注意的是,reversed函数只能用于序列类型,而sorted函数可以用于任何可迭代对象。另外,sorted函数还可以接受一个关键字参数key,用于指定排序的规则。 ### 回答2: reversed是python内置的函数之一,用于对序列进行反向迭代。它接受一个可迭代对象(如列表、字符串或元组)作为参数,并返回一个新的反向迭代器。通过调用reversed()函数,可以逆序地访问序列中的元素。 例如,如果有一个列表["A", "B", "C", "D"],通过调用reversed()函数,可以得到一个反向迭代器,依次返回"D", "C", "B", "A"。需要注意的是,reversed()函数返回的是一个迭代器,如果需要将其转换为列表或其他可迭代对象,可以使用list()等函数进行转换。 sorted是另一个python内置函数,用于对可迭代对象进行排序。它接受一个可迭代对象作为参数,并返回一个新的已排序的列表。sorted()函数可以对字符串、列表、元组等进行排序,甚至也可以自定义排序规则。 例如,如果有一个列表[5, 2, 7, 1],通过调用sorted()函数,可以得到一个新的已排序的列表[1, 2, 5, 7]。需要注意的是,sorted()函数返回的是一个新的已排序列表,原始列表不会被改变。 sorted()函数也可以接受多个参数,其中之一是一个可选的关键字参数key,用于指定排序规则。例如,可以通过指定key参数为一个函数,来实现基于某个属性进行排序。 总而言之,reversed()和sorted()是两个常用的python函数,分别用于对序列进行反向迭代和排序。它们为我们提供了灵活的处理序列的方法,使我们能够更加方便地操作和处理数据。 ### 回答3: python中的reversed()和sorted()都是用于对可迭代对象进行排序或翻转顺序的函数。 reversed()函数用于将一个可迭代对象的元素进行逆序排列,并返回一个反向迭代器。反向迭代器可以通过list()函数转换为一个列表,或者可以直接使用for循环进行遍历。以下是reversed()的使用示例: ```python my_list = [1, 2, 3, 4, 5] reversed_list = list(reversed(my_list)) for element in reversed_list: print(element) ``` 输出结果为: ``` 5 4 3 2 1 ``` sorted()函数用于对可迭代对象进行排序,默认情况下按照元素的自然顺序进行排序(从小到大)。sorted()函数返回一个新的列表,而不改变原来的可迭代对象。以下是sorted()的使用示例: ```python my_list = [3, 1, 5, 2, 4] sorted_list = sorted(my_list) for element in sorted_list: print(element) ``` 输出结果为: ``` 1 2 3 4 5 ``` 如果想按照自定义的排序规则进行排序,可以通过传递一个用于比较元素的函数或lambda表达式作为sorted()函数的参数。使用reverse参数可以控制排序结果是升序还是降序。例如: ```python my_list = [3, 1, 5, 2, 4] sorted_list = sorted(my_list, reverse=True) for element in sorted_list: print(element) ``` 输出结果为: ``` 5 4 3 2 1 ``` 综上所述,reversed()函数用于将可迭代对象的元素进行逆序排列,而sorted()函数用于对可迭代对象进行排序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值