该流提供以下操作:
class Stream:
def __init__(self, data):
self.data = list(data)
def read(self):
if not self.data:
return None
head, *self.data = self.data
return head
def peek(self):
return self.data[0] if self.data else None
Run Code Online (Sandbox Code Playgroud)
流中的元素(因此 的元素data)具有恒定大小,并且它们都不是None,因此None表示流结束。流的长度只能通过消耗整个流来了解。请注意,计算元素数量会消耗O(log n)空间。
我相信没有办法使用O(1)空间从流中随机选择一个项目。
任何人都可以证明这一点吗?