0

I have a list of iterators, such as l = [range(1), range(2), range(3)] and each iterator iterates over the possibilities that could be in that slot.

However, I don't know how long the list is going to be. In this case, to get what I want, I can easily do [[val1, val2, val3] for val1 in l[0] for val2 in l[1] for val3 in l[2]].

I've been looking a lot at itertools, and couldn't see anything that matched this pattern.

What function can take in a list of iterators and generate a list of all the possibilities for lists where each value in the list is a value of one of the generators in the slots?

Pro Q
  • 4,391
  • 4
  • 43
  • 92
  • [`range` is not an interator](https://treyhunner.com/2018/02/python-range-is-not-an-iterator/). – DYZ Nov 25 '18 at 08:09
  • [True.](https://stackoverflow.com/questions/13092267/if-range-is-a-generator-in-python-3-3-why-can-i-not-call-next-on-a-range) Thank you for catching that. – Pro Q Nov 25 '18 at 10:26

1 Answers1

0

As I was typing up this question, I realized that there is in fact an itertools function that accomplishes this.

list(itertools.product(*l)) does the trick.

I figure I'll just post this as a self-answered question in case someone else has similar terminology.

Pro Q
  • 4,391
  • 4
  • 43
  • 92