我对在创建 Python 时做出一些选择的想法有一些疑问。
首先是sorted()
和reversed()
这2个内置方法,为什么前者返回的是列表,后者返回的是迭代器?为什么会产生这种差异?
最佳答案
sorted()
和 reversed()
做完全不同的事情。
reversed()
可以非常有效地为您提供序列的反转。 list
、str
和 range
等类型实现了 __reversed__
method用于反向访问相同序列(简单地将索引转换为从末尾而不是从头开始计数);如果未实现,则使用 __getitem__
和 __len__
方法,并且 reversed()
自行进行转换。
这里重要的是元素的相对顺序不会改变,只是迭代的方向不同。在这方面 reversed()
是 iter()
的倒数,但仅适用于具有固定长度的类型。
另一方面,排序总是必须建立一个新的列表,因为必须改变元素的相对顺序。您不再只是一个一个地获取元素而不必知道序列中还有哪些其他元素。
关于python - sorted()/reversed() 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24823592/