BuK/IIm20/Vorlesung 2 Grüning/Hilbert Python

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Python</language>
<code id="60717516e7a6a">
def take(seq, n):
    result = []
    try:
        for i in range(n):
            result.append(next(seq))
    except StopIteration:
        pass
    return result


class stream:

  def make_stream(self):
    n = 0
    while True:
        yield n
        n += 1

  def __init__(self):
    self.li = []
    self.stream = self.make_stream()


  def anext(self):
    item = next(self.stream)   
    self.li.append(item)
    return item
  
  def next_until(self, n):
    if n < len(self.li):
      return self.li[n - 1]
    else:
      item = None
      while n > len(self.li):
        item = self.anext()
    return item

  def get(self, n):
    if n >= len(self.li):
      return self.next_until(n)
    else:
      return self.li[n - 1]

  def get_finite(self):
    return self.li

  def set(self, n, value):
    self.get(n)
    self.li[n - 1] = value
</code>

<run id="60717516e7ad8">
s = stream()
for i in range(10):
  print(s.anext())

s.set(40, False)
print(s.get_finite())
</run>