python笔记16——reversed、sorted函数

本文介绍了Python中的reversed和sorted函数。reversed函数用于返回序列的逆序迭代器,支持列表、元组、字符串和range对象。sorted函数则对序列进行排序,可自定义排序规则和选择升序或降序排列,并返回排序后的列表。

reversed函数使用

reversed() 其功能是对于给定的序列(包括列表、元组、字符串以及 range(n) 区间),该函数可以返回一个逆序序列的迭代器。
reversed() 函数的语法格式如下:
reversed(seq)
其中,seq 可以是列表,元素,字符串以及 range() 生成的区间列表。

list_1 = [1, 2, 3, 4, 5]
print(reversed(list_1))             #<list_reverseiterator object at 0x0000000002B73588>
print(list(reversed(list_1)))       #[5, 4, 3, 2, 1]

list_2 = []
for i in reversed(list_1):
    list_2.append(i)
print(list_2)                       #[5, 4, 3, 2, 1]

#将列表进行逆序,用列表推导式的方法
print([i 
### Python 中 `reversed` 和 `sorted` 的区别及用法 #### 基本概念 `reversed()` 和 `sorted()` 是 Python 提供的两种内置函数,分别用于反转和排序序列。两者的功能、返回值类型以及适用场景存在显著差异。 #### 功能对比 - **`reversed()`**: 主要作用是对一个有序序列进行方向上的反转操作。该函数适用于任何支持正向迭代的对象(如列表、元组等),但它无法对无序的数据结构(如字典或集合)直接应用[^1]。 - **`sorted()`**: 不仅能够实现简单的升序或降序排列,还允许通过自定义关键字参数完成复杂的排序逻辑。它可以处理任意类型的可迭代对象,无论是有序还是无序。 #### 返回值类型 - 调用 `reversed(iterable)` 后得到的是一个反向迭代器 (`<class 'reversed'>`),这意味着如果不将其转换成具体形式(例如转为列表),则只能一次性遍历其内容[^4]。 - 使用 `sorted(iterable[, key][, reverse])` 则始终会产生一个新的列表实例作为结果输出[^3]。 #### 参数设置 两者均接收单一必选参数——即待操作的目标容器;除此之外: - `sorted()` 支持额外的关键字选项 `key` 和布尔型标志位 `reverse` 来调整最终呈现次序[^2]^。 #### 性能考量 当面对大规模数据集时,考虑到内存占用率等因素的影响,单纯依靠 `reversed()` 实现倒序读取往往效率更高一些因为无需构建完整的副本即可满足需求[^1]. 然而,在涉及更精细控制条件下的多维度比较场合下,则不得不依赖于具备强大灵活性特性的 `sorted()` 方法来达成目标效果. #### 示例代码展示 以下是几个典型应用场景及其对应解决方案: ```python # Example of using reversed() original_list = ['apple', 'banana', 'cherry'] for fruit in reversed(original_list): # Iterates over the list from end to start. print(fruit) # Output: # cherry # banana # apple # Example demonstrating sorted()'s capabilities beyond mere reversal data_points = [(3,'C'), (1,'A'), (2,'B')] ascending_order_by_first_element = sorted(data_points) # Default behavior sorts by first element ascendingly. print(ascending_order_by_second_char_descending = sorted(data_points,key=lambda x:x[1],reverse=True)) # Outputs respectively: # [(1, 'A'), (2, 'B'), (3, 'C')] # [(3, 'C'), (2, 'B'), (1, 'A')] ``` #### 结论总结 综上所述,尽管二者皆服务于某种意义上的"整理",但在实际运用过程中需依据具体情况作出合理抉择:`reversed()` 更适合那些仅仅关注前后位置互换而不关心内部细节的情形;而对于追求高度定制化且可能涉及到跨字段关联分析的任务来说,"全能选手"`sorted()`无疑是更好的伙伴.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值