On Wed, Mar 2, 2022 at 9:01 AM Larry Martell <larry.mart...@gmail.com> wrote:
>
> On Wed, Mar 2, 2022 at 8:54 AM Joel Goldstick <joel.goldst...@gmail.com> 
> wrote:
> >
> > On Wed, Mar 2, 2022 at 8:46 AM Larry Martell <larry.mart...@gmail.com> 
> > wrote:
> > >
> > > 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.
> > > --
> > > 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
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to