On Wed, Mar 2, 2022 at 9:10 AM Antoon Pardon <antoon.par...@vub.be> wrote: > > Op 2/03/2022 om 14:44 schreef Larry Martell: > > On Wed, Mar 2, 2022 at 8:37 AM Antoon Pardon<antoon.par...@vub.be> wrote: > >> > >> Op 2/03/2022 om 14:27 schreef Larry Martell: > >>> On Tue, Mar 1, 2022 at 7:21 PM<2qdxy4rzwzuui...@potatochowder.com> > >>> wrote: > >>>> On 2022-03-01 at 19:12:10 -0500, > >>>> Larry Martell<larry.mart...@gmail.com> wrote: > >>>> > >>>>> If I have 2 lists, e.g.: > >>>>> > >>>>> os = ["Linux","Windows"] > >>>>> region = ["us-east-1", "us-east-2"] > >>>>> > >>>>> How can I get a list of tuples with all possible permutations? > >>>>> > >>>>> So for this example I'd want: > >>>>> > >>>>> [("Linux", "us-east-1"), ("Linux", "us-east-2"), ("Windows", > >>>>> "us-east-1"), "Windows", "us-east-2')] > >>>>> > >>>>> The lists can be different lengths or can be 0 length. Tried a few > >>>>> different things with itertools but have not got just what I need. > >>>> [(o, r) for o in os for r in region] > >>> This does not work if region = []. I wrote in my question that either > >>> list could be empty. > >> What do you mean it doesn't work? The result seems to be an empty list, > >> which IMO is a perfectly valid result. > >> > >> All possible permutations over two collections where one collection is > >> empty, should IMO give you an empty collection. > > If one list is empty I want just the other list. What I am doing is > > building a list to pass to a mongodb query. If region is empty then I > > want to query for just the items in the os list. I guess I can test > > for the lists being empty, but I'd like a solution that handles that > > as down the road there could be more than just 2 lists. > > How about the following: Keep a list of your lists you want to permute over. > Like the following: > > permutation_elements = [["Linux","Windows"],["us-east-1", "us-east-2"]] > > permutation = itertools.product(*permutation_elements) > > If you don't include the empty list, you will get more or less what you > seem to want.
But I need to deal with that case. -- https://mail.python.org/mailman/listinfo/python-list