python - sorted()/reversed() 的比较

标签 python python-3.x

我对在创建 Python 时做出一些选择的想法有一些疑问。

首先是sorted()reversed()这2个内置方法,为什么前者返回的是列表,后者返回的是迭代器?为什么会产生这种差异?

最佳答案

sorted()reversed() 做完全不同的事情。

reversed() 可以非常有效地为您提供序列的反转。 liststrrange 等类型实现了 __reversed__ method用于反向访问相同序列(简单地将索引转换为从末尾而不是从头开始计数);如果未实现,则使用 __getitem____len__ 方法,并且 reversed() 自行进行转换。

这里重要的是元素的相对顺序不会改变,只是迭代的方向不同。在这方面 reversed()iter() 的倒数,但仅适用于具有固定长度的类型。

另一方面,排序总是必须建立一个新的列表,因为必须改变元素的相对顺序。您不再只是一个一个地获取元素而不必知道序列中还有哪些其他元素。

关于python - sorted()/reversed() 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24823592/

相关文章:

python-3.x - 在 PyTorch 中向 RNN 提供数据的正确方法

python 3.2 错误说 urllib.parse.urlencode() 未定义

python - 执行代码后停止 Docker 容器

python - 如何从opencv的morhpologyEx获得有关图像边界的预期行为?

javascript - Altair:Javascript 错误阻止图表显示

python-3.x - 标签内的美丽汤标签

python - 如何在 python pandas 中按自定义顺序排序?

来自无尽数据循环的 Python Flask 网站?

python - 将 df1 中的值替换为 df2 中的值,然后在新列中分配代码(如果值被替换)

python - 运行 python3 Xcode 项目时出错(符号链接(symbolic link)级别过多,不允许操作)- macOS BigSur