我正在尝试实现迭代器对象的延迟分区,当迭代器的某个元素上的函数更改值时,该对象将生成迭代器的切片。这将模仿Clojure分区的行为(尽管输出的语义不同,因为Python将真正“消费”元素)。我的实现在它执行的操作数量上是最优的,但在它所需的内存中不是最佳的。我不明白为什么一个好的实现需要多于O(1)的内存,但是我的实现占用了O(k)内存,其中k是分区的大小。我希望能处理k值很大的情况。有人知道一个好的实现吗?在
正确的行为应该是
>>>unagi = [-1, 3, 4, 7, -2, 1, -3, -5]
>>> parts = partitionby(lambda x: x < 0,unagi)
>>> print [[y for y in x] for x in parts]
[[-1], [3, 4, 7], [-2], [1], [-3, -5]]
这是我现在的版本
^{pr2}$
为什么不reuse ^{} ?我想是O(1)。在
groupby
的实现与您的不同之处在于partition
是一个专门的迭代器对象,而不是{它困扰着我,
partition
可能是一个普通列表,而不是迭代器,即:可能是:
^{pr2}$相关问题 更多 >
编程相关推荐