docs: def isubsample(full_sample, k, full_sample_len=None):
      """Down-sample an enumerable list of things"""
      # Determine length #
      if not full_sample_len: full_sample_len = len(full_sample)
      # Check size coherence #
      if not 0 <= k <= full_sample_len:
          raise ValueError('Required that 0 <= k <= full_sample_length')
      # Do it #
      picked = 0
      for i, element in enumerate(full_sample):
          prob = (k-picked) / (full_sample_len-i)
          if random.random() < prob:
              yield element
              picked += 1
      # Did we pick the right amount #
      assert picked == k