code: def smoothed(values, qsize, average=mean):
      
      values = _normalize(values)
      if qsize < 1:
          raise ValueError("qsize must be 1 or larger")
      q = []
      it = iter(values)
      try:
          for i in range(qsize):
              q.append(next(it))
          for i in cycle(range(qsize)):
              yield average(q)
              q[i] = next(it)
      except StopIteration:
          pass
docs: Queues up readings from *values* (the number of readings queued is
      determined by *qsize*) and begins yielding the *average* of the last
      *qsize* values when the queue is full. The larger the *qsize*, the more the
      values are smoothed. For example, to smooth the analog values read from an
      ADC::
  
          from gpiozero import MCP3008
          from gpiozero.tools import smoothed
  
          adc = MCP3008(channel=0)
  
          for value in smoothed(adc, 5):
              print(value)