Advertisement
here2share

# generic_nested.py

Dec 9th, 2024
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.82 KB | None | 0 0
  1. # generic_nested.py
  2.  
  3. def do_next(gen):
  4.     try:
  5.         print(next(gen))
  6.         return gen
  7.     except:
  8.         return 0
  9.  
  10. def nested_loops(n_or_indices, range_max=5):
  11.     if isinstance(n_or_indices, list):
  12.         indices = n_or_indices
  13.         n = len(indices)
  14.     else:
  15.         n = n_or_indices
  16.         indices = [0] * n
  17.    
  18.     while True:
  19.         yield indices[:]
  20.        
  21.         for i in range(n - 1, -1, -1):
  22.             if indices[i] < range_max - 1:
  23.                 indices[i] += 1
  24.                 break
  25.             indices[i] = 0
  26.         else:
  27.             return
  28.  
  29. # Example usage with next and while loop:
  30. gen1 = nested_loops(3)
  31. while gen1:
  32.     gen1 = do_next(gen1)
  33.  
  34. gen2 = nested_loops(4, 3)
  35. while gen2:
  36.     gen2 = do_next(gen2)
  37.  
  38. gen3 = nested_loops([0, 2, 1], 3)
  39. while gen3:
  40.     gen3 = do_next(gen3)
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement