Hi Andy, > The code works great, Thanks for the speedy response. The only problem > which I can see is that the code scales very bad with the size of n.
> So, as I want a small subsection of the data (i.e lines where there are > only 4 1s, number in the code below) for a system where n is large(>20). > The idea is that this would reduce the number of iterations dramatic > despite the individual loop taking longer to operate.(see example data). > I've modified the bit_list_maker to allow for this but it has started to > produce rows which are identical. > Can anyone make any suggestion/improvements to the code I feel that you would use this table for something else than simple print it. It is probably a decision table. As each cell of this table can be calculated anytime, I think to not store it in any big table with a lot of integers in each cell, but simple calculate it at need. You can save a lot of memory in that way. If it is a decision table, I don't mind to starting the permutation on the first col instead of the last. It doesn't change the permutation itself, just its order. def Perm_matrix(row, col): if (row & (2**col)): return 1 return 0 n = 4 for row in range(2**n): for col in range(n): print Perm_matrix(row, col), print ';' It is easy to turn it into a class. class Perm: def __init__(self, num): self.rownum = 2**num self.colnum = num def Perm_matrix(self, row, col): if (row & (2**col)): return 1 return 0 def __getitem__(self,(row,col)): return self.Perm_matrix(row,col) m = Perm(4) for row in range(m.rownum): for col in range(m.colnum): print m[row, col], print '' Regards, Janos _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor