回复:相当于Ruby的"!"方法?

保罗·麦奎尔(Paul McGuire)写道:
我不同意.惯例是突变方法不应返回.
这是因为每个删除都是o(n),使整个过程o(n*2),
而新列表是o(n) - 以及记住迭代的麻烦
进行拆卸时反向.
我认同.去除和插入与
更改到位.如果我想在列表中对每个数字进行平衡,并且 *做 *
不需要原始列表*,我会毫不犹豫地将其做好.
newish sorted()和反向()内置旨在补充
list.sort和list.RERVERSE,不替换它们.
tjr

# 回答1


在2008年2月25日,Terry Reedy 顺便说一句,是否有原因为什么列表上的satered()返回列表,而
相同列表上的反向()返回迭代器?
GS
- -
grzegorz staniak
# 回答2


Grzegorz Staniak写道:
排序序列所需的算法完全是完全
与循环序列循环所需的算法不同
撤销.几天前,我们经历了这件事.
# 回答3


在2008年8月25日星期一17:04:07 +0000上,Grzegorz Staniak写道:
顺便说一句,是否有原因为什么列表上的satered()返回列表,而
相同列表上的反向()返回迭代器?
直到有人发现如何在不看到清单的那一天
所有项目首先,sorted()返回迭代器没有意义.
它必须生成整个列表的副本才能对其进行排序,因此
好吧,只需返回列表 - 将其变成一个没有优势
迭代器已经构建列表后.
另一方面,Retversed()可以懒惰地提供其物品.虽然是
是否需要访问整个源,它不需要返回
整个列表.它只能一次返回一个项目,从
最后一个.
但是,这确实意味着有一个陷阱:如果您在以后突变清单
在其上调用sorted(),sorted()的结果不更改.但
相反()不同样的情况:
4
"突变"
解决方案很简单:呼叫列表(反向(L)).或不要突变
原本的.
- -
史蒂文
# 回答4


8月26日,9:47*上午,史蒂文·d'Aprano cybersource.com.auwrote:
直到有人发现如何在不看到清单的那一天
所有项目首先,sorted()返回迭代器没有意义.
对于Nitpick,这不是严格的:当然,您充其量是O(nlogn)
在整理整个列表时,您可以返回
O(n)中的"排序"列表(如果您不介意使用O(n^2)算法
全部).即,如果您只有用例
可能会查看排序列表的前几个元素,它将
拥有迭代剂有意义.

标签: python

添加新评论