All permutations from 2 lists

Joel Goldstick joel.goldstick at gmail.com
Wed Mar 2 09:05:28 EST 2022


On Wed, Mar 2, 2022 at 9:01 AM Larry Martell <larry.martell at gmail.com> wrote:
>
> On Wed, Mar 2, 2022 at 8:54 AM Joel Goldstick <joel.goldstick at gmail.com> wrote:
> >
> > On Wed, Mar 2, 2022 at 8:46 AM Larry Martell <larry.martell at gmail.com> wrote:
> > >
> > > On Wed, Mar 2, 2022 at 8:37 AM Antoon Pardon <antoon.pardon at vub.be> wrote:
> > > >
> > > >
> > > > Op 2/03/2022 om 14:27 schreef Larry Martell:
> > > > > On Tue, Mar 1, 2022 at 7:21 PM<2QdxY4RzWzUUiLuE at potatochowder.com>  wrote:
> > > > >> On 2022-03-01 at 19:12:10 -0500,
> > > > >> Larry Martell<larry.martell at 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.
> > > --
> > > https://mail.python.org/mailman/listinfo/python-list
> >
> > Does this help you out:
> >
> > >>> [(o,r) for o in opsys for r in region or "x"]
> > [('Linux', 'x'), ('Window', 'x')]
>
> That doesn't work if opsys = [] - either list could be empty.

So, maybe what you need to do is determine the length of the longest
list, and pad the other lists as required before producing the tuples?

-- 
Joel Goldstick


More information about the Python-list mailing list