Combinations of multiple listsHow do I check if a list is empty?Finding the index of an item given a list containing it in PythonDifference between append vs. extend list methods in PythonHow to return multiple values from a function?How to make a flat list out of list of lists?How do I concatenate two lists in Python?How to clone or copy a list?How do I list all files of a directory?How to read a file line-by-line into a list?Catch multiple exceptions in one line (except block)

Multi tool use
Multi tool use

Is it unprofessional to ask if a job posting on GlassDoor is real?

A reference to a well-known characterization of scattered compact spaces

How can I prevent hyper evolved versions of regular creatures from wiping out their cousins?

What killed these X2 caps?

What reasons are there for a Capitalist to oppose a 100% inheritance tax?

Increase size of symbol intercal when in superscript position

prove that the matrix A is diagonalizable

Is it possible to create light that imparts a greater proportion of its energy as momentum rather than heat?

What's the point of deactivating Num Lock on login screens?

Why is the 'in' operator throwing an error with a string literal instead of logging false?

Emailing HOD to enhance faculty application

How to show the equivalence between the regularized regression and their constraint formulas using KKT

What's the difference between 'rename' and 'mv'?

Were any external disk drives stacked vertically?

Forgetting the musical notes while performing in concert

Etiquette around loan refinance - decision is going to cost first broker a lot of money

Does a druid starting with a bow start with no arrows?

Why does Kotter return in Welcome Back Kotter

Brothers & sisters

How to say in German "enjoying home comforts"

Diode datasheet reading

Did Shadowfax go to Valinor?

Why is Collection not simply treated as Collection<?>

Alternative to sending password over mail?



Combinations of multiple lists


How do I check if a list is empty?Finding the index of an item given a list containing it in PythonDifference between append vs. extend list methods in PythonHow to return multiple values from a function?How to make a flat list out of list of lists?How do I concatenate two lists in Python?How to clone or copy a list?How do I list all files of a directory?How to read a file line-by-line into a list?Catch multiple exceptions in one line (except block)






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








6















Suppose I have three lists:



list1 --> [a, b, c, d, e, f, g, h]
list2 --> [i, j, k]
list3 --> [l, m, n, o, p]


I wish to generate all combinations where I take five elements from list1, two elements from list2 and three elements from list3.



eg.



a, b, c, d, e, i, j, l, m, n 
a, b, c, d, e, i, j, l, m, o
etc.


I tried to use itertools.combinations.



l1_combinations = itertools.combinations(list1, 5)
l2_combinations = itertools.combinations(list2, 2)
l3_combinations = itertools.combinations(list3, 3)
for l1_iterator in list(l1_combinations):
for l2_iterator in list(l2_combinations): #added a missing )
for l3_iterator in list(l3_combinations):
sample = l1_iterator + l2_iterator + l3_iterator
print(sample)


But I am getting output with iterations happening only on list3. In all the output, only first five elements from list1 and first two elements from list2 are present. Combinations with other elements from those two lists aren't present.



Can someone help me here and also explain what exactly did i miss ?










share|improve this question
























  • Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

    – Reedinationer
    2 hours ago

















6















Suppose I have three lists:



list1 --> [a, b, c, d, e, f, g, h]
list2 --> [i, j, k]
list3 --> [l, m, n, o, p]


I wish to generate all combinations where I take five elements from list1, two elements from list2 and three elements from list3.



eg.



a, b, c, d, e, i, j, l, m, n 
a, b, c, d, e, i, j, l, m, o
etc.


I tried to use itertools.combinations.



l1_combinations = itertools.combinations(list1, 5)
l2_combinations = itertools.combinations(list2, 2)
l3_combinations = itertools.combinations(list3, 3)
for l1_iterator in list(l1_combinations):
for l2_iterator in list(l2_combinations): #added a missing )
for l3_iterator in list(l3_combinations):
sample = l1_iterator + l2_iterator + l3_iterator
print(sample)


But I am getting output with iterations happening only on list3. In all the output, only first five elements from list1 and first two elements from list2 are present. Combinations with other elements from those two lists aren't present.



Can someone help me here and also explain what exactly did i miss ?










share|improve this question
























  • Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

    – Reedinationer
    2 hours ago













6












6








6








Suppose I have three lists:



list1 --> [a, b, c, d, e, f, g, h]
list2 --> [i, j, k]
list3 --> [l, m, n, o, p]


I wish to generate all combinations where I take five elements from list1, two elements from list2 and three elements from list3.



eg.



a, b, c, d, e, i, j, l, m, n 
a, b, c, d, e, i, j, l, m, o
etc.


I tried to use itertools.combinations.



l1_combinations = itertools.combinations(list1, 5)
l2_combinations = itertools.combinations(list2, 2)
l3_combinations = itertools.combinations(list3, 3)
for l1_iterator in list(l1_combinations):
for l2_iterator in list(l2_combinations): #added a missing )
for l3_iterator in list(l3_combinations):
sample = l1_iterator + l2_iterator + l3_iterator
print(sample)


But I am getting output with iterations happening only on list3. In all the output, only first five elements from list1 and first two elements from list2 are present. Combinations with other elements from those two lists aren't present.



Can someone help me here and also explain what exactly did i miss ?










share|improve this question
















Suppose I have three lists:



list1 --> [a, b, c, d, e, f, g, h]
list2 --> [i, j, k]
list3 --> [l, m, n, o, p]


I wish to generate all combinations where I take five elements from list1, two elements from list2 and three elements from list3.



eg.



a, b, c, d, e, i, j, l, m, n 
a, b, c, d, e, i, j, l, m, o
etc.


I tried to use itertools.combinations.



l1_combinations = itertools.combinations(list1, 5)
l2_combinations = itertools.combinations(list2, 2)
l3_combinations = itertools.combinations(list3, 3)
for l1_iterator in list(l1_combinations):
for l2_iterator in list(l2_combinations): #added a missing )
for l3_iterator in list(l3_combinations):
sample = l1_iterator + l2_iterator + l3_iterator
print(sample)


But I am getting output with iterations happening only on list3. In all the output, only first five elements from list1 and first two elements from list2 are present. Combinations with other elements from those two lists aren't present.



Can someone help me here and also explain what exactly did i miss ?







python






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 hours ago









amchugh89

595621




595621










asked 2 hours ago









Arun AranganathanArun Aranganathan

425




425












  • Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

    – Reedinationer
    2 hours ago

















  • Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

    – Reedinationer
    2 hours ago
















Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

– Reedinationer
2 hours ago





Well I'm sure the missing ) in for l2_iterator in list(l2_combinations: doesn't help...

– Reedinationer
2 hours ago












2 Answers
2






active

oldest

votes


















7














As an alternative to regenerating the list of combinations, compute the product of the combinations up front; this also saves you from nesting for loops.



from itertools import combinations, product


list1 = list("abcdefgh")
list2 = list("ijk")
list3 = list("lmnop")

l1 = combinations(list1, 5)
l2 = combinations(list2, 2)
l3 = combinations(list3, 3)
for c1, c2, c3 in product(l1, l2, l3):
sample = c1 + c2 + c3
print(sample)





share|improve this answer






























    6














    Don't iterate over the same iterator multiple times, after the first time it's exhausted. Iterate over a fresh iterator each time:



    for l1_iterator in itertools.combinations(list1, 5):
    for l2_iterator in itertools.combinations(list2, 2):
    for l3_iterator in itertools.combinations(list3, 3):
    sample = l1_iterator + l2_iterator + l3_iterator
    print(sample)


    Or make lists of each one in advance to avoid recomputation:



    l1_combinations = list(itertools.combinations(list1, 5))
    l2_combinations = list(itertools.combinations(list2, 2))
    l3_combinations = list(itertools.combinations(list3, 3))
    for l1_iterator in l1_combinations:
    for l2_iterator in l2_combinations:
    for l3_iterator in l3_combinations:
    sample = l1_iterator + l2_iterator + l3_iterator
    print(sample)





    share|improve this answer

























    • What would be a solution to not regenerate the combinations every time?

      – ritlew
      2 hours ago






    • 2





      @ritlew see edit.

      – Alex Hall
      2 hours ago











    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55523811%2fcombinations-of-multiple-lists%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    7














    As an alternative to regenerating the list of combinations, compute the product of the combinations up front; this also saves you from nesting for loops.



    from itertools import combinations, product


    list1 = list("abcdefgh")
    list2 = list("ijk")
    list3 = list("lmnop")

    l1 = combinations(list1, 5)
    l2 = combinations(list2, 2)
    l3 = combinations(list3, 3)
    for c1, c2, c3 in product(l1, l2, l3):
    sample = c1 + c2 + c3
    print(sample)





    share|improve this answer



























      7














      As an alternative to regenerating the list of combinations, compute the product of the combinations up front; this also saves you from nesting for loops.



      from itertools import combinations, product


      list1 = list("abcdefgh")
      list2 = list("ijk")
      list3 = list("lmnop")

      l1 = combinations(list1, 5)
      l2 = combinations(list2, 2)
      l3 = combinations(list3, 3)
      for c1, c2, c3 in product(l1, l2, l3):
      sample = c1 + c2 + c3
      print(sample)





      share|improve this answer

























        7












        7








        7







        As an alternative to regenerating the list of combinations, compute the product of the combinations up front; this also saves you from nesting for loops.



        from itertools import combinations, product


        list1 = list("abcdefgh")
        list2 = list("ijk")
        list3 = list("lmnop")

        l1 = combinations(list1, 5)
        l2 = combinations(list2, 2)
        l3 = combinations(list3, 3)
        for c1, c2, c3 in product(l1, l2, l3):
        sample = c1 + c2 + c3
        print(sample)





        share|improve this answer













        As an alternative to regenerating the list of combinations, compute the product of the combinations up front; this also saves you from nesting for loops.



        from itertools import combinations, product


        list1 = list("abcdefgh")
        list2 = list("ijk")
        list3 = list("lmnop")

        l1 = combinations(list1, 5)
        l2 = combinations(list2, 2)
        l3 = combinations(list3, 3)
        for c1, c2, c3 in product(l1, l2, l3):
        sample = c1 + c2 + c3
        print(sample)






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 hours ago









        chepnerchepner

        260k34250343




        260k34250343























            6














            Don't iterate over the same iterator multiple times, after the first time it's exhausted. Iterate over a fresh iterator each time:



            for l1_iterator in itertools.combinations(list1, 5):
            for l2_iterator in itertools.combinations(list2, 2):
            for l3_iterator in itertools.combinations(list3, 3):
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)


            Or make lists of each one in advance to avoid recomputation:



            l1_combinations = list(itertools.combinations(list1, 5))
            l2_combinations = list(itertools.combinations(list2, 2))
            l3_combinations = list(itertools.combinations(list3, 3))
            for l1_iterator in l1_combinations:
            for l2_iterator in l2_combinations:
            for l3_iterator in l3_combinations:
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)





            share|improve this answer

























            • What would be a solution to not regenerate the combinations every time?

              – ritlew
              2 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              2 hours ago















            6














            Don't iterate over the same iterator multiple times, after the first time it's exhausted. Iterate over a fresh iterator each time:



            for l1_iterator in itertools.combinations(list1, 5):
            for l2_iterator in itertools.combinations(list2, 2):
            for l3_iterator in itertools.combinations(list3, 3):
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)


            Or make lists of each one in advance to avoid recomputation:



            l1_combinations = list(itertools.combinations(list1, 5))
            l2_combinations = list(itertools.combinations(list2, 2))
            l3_combinations = list(itertools.combinations(list3, 3))
            for l1_iterator in l1_combinations:
            for l2_iterator in l2_combinations:
            for l3_iterator in l3_combinations:
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)





            share|improve this answer

























            • What would be a solution to not regenerate the combinations every time?

              – ritlew
              2 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              2 hours ago













            6












            6








            6







            Don't iterate over the same iterator multiple times, after the first time it's exhausted. Iterate over a fresh iterator each time:



            for l1_iterator in itertools.combinations(list1, 5):
            for l2_iterator in itertools.combinations(list2, 2):
            for l3_iterator in itertools.combinations(list3, 3):
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)


            Or make lists of each one in advance to avoid recomputation:



            l1_combinations = list(itertools.combinations(list1, 5))
            l2_combinations = list(itertools.combinations(list2, 2))
            l3_combinations = list(itertools.combinations(list3, 3))
            for l1_iterator in l1_combinations:
            for l2_iterator in l2_combinations:
            for l3_iterator in l3_combinations:
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)





            share|improve this answer















            Don't iterate over the same iterator multiple times, after the first time it's exhausted. Iterate over a fresh iterator each time:



            for l1_iterator in itertools.combinations(list1, 5):
            for l2_iterator in itertools.combinations(list2, 2):
            for l3_iterator in itertools.combinations(list3, 3):
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)


            Or make lists of each one in advance to avoid recomputation:



            l1_combinations = list(itertools.combinations(list1, 5))
            l2_combinations = list(itertools.combinations(list2, 2))
            l3_combinations = list(itertools.combinations(list3, 3))
            for l1_iterator in l1_combinations:
            for l2_iterator in l2_combinations:
            for l3_iterator in l3_combinations:
            sample = l1_iterator + l2_iterator + l3_iterator
            print(sample)






            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited 2 hours ago

























            answered 2 hours ago









            Alex HallAlex Hall

            23k32053




            23k32053












            • What would be a solution to not regenerate the combinations every time?

              – ritlew
              2 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              2 hours ago

















            • What would be a solution to not regenerate the combinations every time?

              – ritlew
              2 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              2 hours ago
















            What would be a solution to not regenerate the combinations every time?

            – ritlew
            2 hours ago





            What would be a solution to not regenerate the combinations every time?

            – ritlew
            2 hours ago




            2




            2





            @ritlew see edit.

            – Alex Hall
            2 hours ago





            @ritlew see edit.

            – Alex Hall
            2 hours ago

















            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55523811%2fcombinations-of-multiple-lists%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Bf01A0pSlNPu,4rsFflo,pT8bD6ncCKITaHDzEft4CpO441Fi3x44mmS mJahBRV,Hb,G9GMWTPeC0,ej U65M,LTzPzr0ykRErNPE
            wJn2ymy2 bwCGVhHh98MNAyZ B3Y

            Popular posts from this blog

            What is the result of assigning to std::vector::begin()? The Next CEO of Stack OverflowWhat are the differences between a pointer variable and a reference variable in C++?What does the explicit keyword mean?Concatenating two std::vectorsHow to find out if an item is present in a std::vector?Why is “using namespace std” considered bad practice?What is the “-->” operator in C++?What is the easiest way to initialize a std::vector with hardcoded elements?What is The Rule of Three?What are the basic rules and idioms for operator overloading?Why are std::begin and std::end “not memory safe”?

            Creating centerline of river in QGIS? The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Finding centrelines from polygons in QGIS?Splitting line into two lines with GRASS GIS?Centroid of the equator and a pointpostgis: problems creating flow direction polyline; not all needed connections are drawnhow to make decent sense from scattered river depth measurementsQGIS Interpolation on Curved Grid (River DEMs)How to create automatic parking baysShortest path creation between two linesclipping layer using query builder in QGISFinding which side of closest polyline point lies on in QGIS?Create centerline from multi-digitized roadway lines Qgis 2.18Getting bathymetric contours confined only within river banks using QGIS?