Question : iterating through an array

#is there a way to change this for loop so that it can accept
#a group of tuple lists of any length?
#right now it can only work with length 4.
#for instance, what if tuple_lists was:
#tuple_lists=[
#             [(0,1),(0,2),(0,3)],
#             [(1,1),(1,2)],
#             [(2,1),(2,2)],
#             [(3,1),(3,2),(3,3),(3,4)]
#             [(4,1)],
#            ]
#Is there a way to make this 4 loop length independent?
#Seems like I might have to make a recursive function or something.
Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
tuple_lists=[
             [(0,1),(0,2),(0,3)],
             [(1,1),(1,2)],
             [(2,1),(2,2)],
             [(3,1),(3,2),(3,3),(3,4)]
            ]
   
all_possible_combinations=[]
 
 
for list_0_element in tuple_lists[0]:
  for list_1_element in tuple_lists[1]:
    for list_2_element in tuple_lists[2]:
      for list_3_element in tuple_lists[3]:
        all_possible_combinations.append([list_0_element,
                                          list_1_element,
                                          list_2_element,
                                          list_3_element])
 
 
for combination in all_possible_combinations:
  print combination
 
#output:
#[(0, 1), (1, 1), (2, 1), (3, 1)]
#[(0, 1), (1, 1), (2, 1), (3, 2)]
#[(0, 1), (1, 1), (2, 1), (3, 3)]
#[(0, 1), (1, 1), (2, 1), (3, 4)]
#[(0, 1), (1, 1), (2, 2), (3, 1)]
#[(0, 1), (1, 1), (2, 2), (3, 2)]
#[(0, 1), (1, 1), (2, 2), (3, 3)]
#[(0, 1), (1, 1), (2, 2), (3, 4)]
#[(0, 1), (1, 2), (2, 1), (3, 1)]
#[(0, 1), (1, 2), (2, 1), (3, 2)]
#[(0, 1), (1, 2), (2, 1), (3, 3)]
#[(0, 1), (1, 2), (2, 1), (3, 4)]
#[(0, 1), (1, 2), (2, 2), (3, 1)]
#[(0, 1), (1, 2), (2, 2), (3, 2)]
#[(0, 1), (1, 2), (2, 2), (3, 3)]
#[(0, 1), (1, 2), (2, 2), (3, 4)]
#[(0, 2), (1, 1), (2, 1), (3, 1)]
#[(0, 2), (1, 1), (2, 1), (3, 2)]
#[(0, 2), (1, 1), (2, 1), (3, 3)]
#[(0, 2), (1, 1), (2, 1), (3, 4)]
#[(0, 2), (1, 1), (2, 2), (3, 1)]
#[(0, 2), (1, 1), (2, 2), (3, 2)]
#[(0, 2), (1, 1), (2, 2), (3, 3)]
#[(0, 2), (1, 1), (2, 2), (3, 4)]
#[(0, 2), (1, 2), (2, 1), (3, 1)]
#[(0, 2), (1, 2), (2, 1), (3, 2)]
#[(0, 2), (1, 2), (2, 1), (3, 3)]
#[(0, 2), (1, 2), (2, 1), (3, 4)]
#[(0, 2), (1, 2), (2, 2), (3, 1)]
#[(0, 2), (1, 2), (2, 2), (3, 2)]
#[(0, 2), (1, 2), (2, 2), (3, 3)]
#[(0, 2), (1, 2), (2, 2), (3, 4)]
#[(0, 3), (1, 1), (2, 1), (3, 1)]
#[(0, 3), (1, 1), (2, 1), (3, 2)]
#[(0, 3), (1, 1), (2, 1), (3, 3)]
#[(0, 3), (1, 1), (2, 1), (3, 4)]
#[(0, 3), (1, 1), (2, 2), (3, 1)]
#[(0, 3), (1, 1), (2, 2), (3, 2)]
#[(0, 3), (1, 1), (2, 2), (3, 3)]
#[(0, 3), (1, 1), (2, 2), (3, 4)]
#[(0, 3), (1, 2), (2, 1), (3, 1)]
#[(0, 3), (1, 2), (2, 1), (3, 2)]
#[(0, 3), (1, 2), (2, 1), (3, 3)]
#[(0, 3), (1, 2), (2, 1), (3, 4)]
#[(0, 3), (1, 2), (2, 2), (3, 1)]
#[(0, 3), (1, 2), (2, 2), (3, 2)]
#[(0, 3), (1, 2), (2, 2), (3, 3)]
#[(0, 3), (1, 2), (2, 2), (3, 4)]
Open in New Window Select All

Answer : iterating through an array

Try this:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
tuple_lists=[
             [(0,1),(0,2),(0,3)],
             [(1,1),(1,2)],
             [(2,1),(2,2)],
             [(3,1),(3,2),(3,3),(3,4)]
            ]
 
all_possible_combinations = []
for L1 in tuple_lists:
  if not all_possible_combinations:
    all_possible_combinations = [[i] for i in L1]
  else:
    tmp = []
    for i in all_possible_combinations:
      for j in L1:
        tmp.append(i+[j])
    all_possible_combinations = tmp
 
for combination in all_possible_combinations:
  print combination
Open in New Window Select All
Random Solutions  
 
programming4us programming4us