Skip to content

Instantly share code, notes, and snippets.

@stephengruppetta
Created June 25, 2023 08:49
Show Gist options
  • Save stephengruppetta/1d14bc2305984f6781c76ab34222c428 to your computer and use it in GitHub Desktop.
Save stephengruppetta/1d14bc2305984f6781c76ab34222c428 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 __next__(self):
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