Skip to content

Instantly share code, notes, and snippets.

@stephengruppetta
Created June 25, 2023 09:10
Show Gist options
  • Save stephengruppetta/9071015a538dd6769b1a99b27c243972 to your computer and use it in GitHub Desktop.
Save stephengruppetta/9071015a538dd6769b1a99b27c243972 to your computer and use it in GitHub Desktop.
import random
class RandomWalk:
def __init__(self, iterable):
self.values = list(iterable)
def __iter__(self):
return RandomWalkIterator(self)
class RandomWalkIterator:
def __init__(self, random_walk):
self.random_walk = random_walk
self.random_indices = list(
range(len(random_walk.values))
)
random.shuffle(self.random_indices)
self.idx = 0
def __iter__(self):
return self
def __next__(self):
if self.idx >= len(self.random_indices):
raise StopIteration
output = self.random_walk.values[
self.random_indices[self.idx]
]
self.idx += 1
return output
captains = RandomWalk(
[
"Pike",
"Kirk",
"Picard",
"Sisko",
"Janeway",
"Riker",
]
)
for captain in captains:
print(captain)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment