@@ -124,7 +124,7 @@ def _shorten(iterable, n):
124124 raise StopIteration
125125
126126
127- def enumerate (reversible , reverse_index = False , lazy_tuple = False ):
127+ def enumerate (iterable , reverse_index = False , lazy_tuple = False ):
128128 '''
129129 Iterate over `(i, item)` pairs, where `i` is the index number of `item`.
130130
@@ -135,7 +135,7 @@ def enumerate(reversible, reverse_index=False, lazy_tuple=False):
135135
136136 If `lazy_tuple=True`, returns a `LazyTuple` rather than an iterator.
137137 '''
138- iterator = _enumerate (reversible = reversible , reverse_index = reverse_index )
138+ iterator = _enumerate (iterable = iterable , reverse_index = reverse_index )
139139
140140 if lazy_tuple :
141141 from python_toolbox import nifty_collections # Avoiding circular import.
@@ -144,13 +144,17 @@ def enumerate(reversible, reverse_index=False, lazy_tuple=False):
144144 return iterator
145145
146146
147- def _enumerate (reversible , reverse_index ):
147+ def _enumerate (iterable , reverse_index ):
148148 if reverse_index is False :
149- return builtins .enumerate (reversible )
149+ return builtins .enumerate (iterable )
150150 else :
151- my_list = list (builtins .enumerate (reversed (reversible )))
152- my_list .reverse ()
153- return my_list
151+ from python_toolbox import sequence_tools
152+ try :
153+ length = sequence_tools .get_length (iterable )
154+ except AttributeError :
155+ iterable = revenifty_collections .LazyTuple (iterable )
156+ length = len (iterable )
157+ return zip (range (length - 1 , - 1 , - 1 ), iterable )
154158
155159
156160def is_iterable (thing ):
0 commit comments