diff --git a/src/sage/categories/sets_cat.py b/src/sage/categories/sets_cat.py index 54563076db3..459bf9a882b 100644 --- a/src/sage/categories/sets_cat.py +++ b/src/sage/categories/sets_cat.py @@ -2165,7 +2165,10 @@ def __iter__(self): # visualize an odometer, with "wheels" displaying "digits"...: factors = list(self.cartesian_factors()) wheels = [iter(f) for f in factors] - digits = [next(it) for it in wheels] + try: + digits = [next(it) for it in wheels] + except StopIteration: + return while True: yield self._cartesian_product_of_elements(digits) for i in range(len(digits)-1, -1, -1): @@ -2174,7 +2177,10 @@ def __iter__(self): break except StopIteration: wheels[i] = iter(factors[i]) - digits[i] = next(wheels[i]) + try: + digits[i] = next(wheels[i]) + except StopIteration: + return else: break diff --git a/src/sage/combinat/finite_state_machine.py b/src/sage/combinat/finite_state_machine.py index 59626ba771c..3b666e2f84b 100644 --- a/src/sage/combinat/finite_state_machine.py +++ b/src/sage/combinat/finite_state_machine.py @@ -13701,8 +13701,8 @@ def compare_to_tape(self, track_number, word): it_word = iter(word) # check letters in cache - if any(letter_on_track != next(it_word) - for letter_on_track in track_cache): + if any(letter_on_track != letter_in_word + for letter_on_track, letter_in_word in zip(track_cache, it_word)): return False # check letters not already cached