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)

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

prove that the matrix A is diagonalizable

Did Shadowfax go to Valinor?

Why does Arabsat 6A need a Falcon Heavy to launch

Can a virus destroy the BIOS of a modern computer?

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

Why doesn't H₄O²⁺ exist?

I Accidentally Deleted a Stock Terminal Theme

How can saying a song's name be a copyright violation?

How can I make my BBEG immortal short of making them a Lich or Vampire?

Neighboring nodes in the network

Has there ever been an airliner design involving reducing generator load by installing solar panels?

How to draw the figure with four pentagons?

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

Why is consensus so controversial in Britain?

How to take photos in burst mode, without vibration?

If a Gelatinous Cube takes up the entire space of a Pit Trap, what happens when a creature falls into the trap but succeeds on the saving throw?

Will google still index a page if I use a $_SESSION variable?

Is Lorentz symmetry broken if SUSY is broken?

AES: Why is it a good practice to use only the first 16bytes of a hash for encryption?

UK: Is there precedent for the governments e-petition site changing the direction of a government decision?

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

Can one be a co-translator of a book, if he does not know the language that the book is translated into?

Can a rocket refuel on Mars from water?



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;








7















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
    6 hours ago

















7















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
    6 hours ago













7












7








7








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 6 hours ago









amchugh89

595621




595621










asked 6 hours ago









Arun AranganathanArun Aranganathan

475




475












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

    – Reedinationer
    6 hours ago

















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

    – Reedinationer
    6 hours ago
















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

– Reedinationer
6 hours ago





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

– Reedinationer
6 hours ago












2 Answers
2






active

oldest

votes


















8














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
      6 hours ago






    • 2





      @ritlew see edit.

      – Alex Hall
      6 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









    8














    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



























      8














      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

























        8












        8








        8







        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 6 hours ago









        chepnerchepner

        261k35250343




        261k35250343























            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
              6 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              6 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
              6 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              6 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 6 hours ago

























            answered 6 hours ago









            Alex HallAlex Hall

            23k32053




            23k32053












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

              – ritlew
              6 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              6 hours ago

















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

              – ritlew
              6 hours ago






            • 2





              @ritlew see edit.

              – Alex Hall
              6 hours ago
















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

            – ritlew
            6 hours ago





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

            – ritlew
            6 hours ago




            2




            2





            @ritlew see edit.

            – Alex Hall
            6 hours ago





            @ritlew see edit.

            – Alex Hall
            6 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







            Popular posts from this blog

            Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

            Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

            Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її