[Numpy-discussion] how do I list all combinations
Charles R Harris
Wed Dec 26 15:30:43 CST 2007
On Dec 26, 2007 1:45 PM, Keith Goodman <email@example.com> wrote:
> On Dec 26, 2007 12:22 PM, Mathew Yeates <firstname.lastname@example.org> wrote:
> > I have an arbitrary number of lists. I want to form all possible
> > combinations from all lists. So if
> > r1=["dog","cat"]
> > r2=[1,2]
> > I want to return [["dog",1],["dog",2],["cat",1],["cat",2]]
> > It's obvious when the number of lists is not arbitrary. But what if
> > thats not known until runtime?
> Would this work?
> Make a function that takes two inputs (a list of lists and a list) and
> returns a list of lists that contains all possible combinations.
> Iterate through all lists by calling the function with the output of
> the previous call (a list of lists) and the next list.
Yeah, you can do it with recursion, but I don't think it would be quite as
efficient. An example of the explicit approach, define the following
def count(listoflists) :
counter = [i for i in listoflists]
maxdigit = [len(i) - 1 for i in listoflists]
while True :
i = 0;
while i < len(counter) and counter[i] == maxdigit[i] :
counter[i] = 0
i += 1
if i < len(counter) :
counter[i] += 1
In : a = ['dog', 'cat', 'horse']
In : b = ['red', 'black']
In : c = [a,b]
In : for i in count.count(c) : print [c[j][i[j]] for j in range(len(c))]
> Numpy-discussion mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion