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)
Took a trip to a parallel universe, need help deciphering
Is it possible to download Internet Explorer on my Mac running OS X El Capitan?
Brothers & sisters
Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?
How can I make my BBEG immortal short of making them a Lich or Vampire?
Why doesn't H₄O²⁺ exist?
Is there a hemisphere-neutral way of specifying a season?
Does casting Light, or a similar spell, have any effect when the caster is swallowed by a monster?
Withdrawals from HSA
Can I use a neutral wire from another outlet to repair a broken neutral?
Fully-Firstable Anagram Sets
Where does SFDX store details about scratch orgs?
How to draw the figure with four pentagons?
Why does Arabsat 6A need a Falcon Heavy to launch
How can I prevent hyper evolved versions of regular creatures from wiping out their cousins?
UK: Is there precedent for the governments e-petition site changing the direction of a government decision?
How to take photos in burst mode, without vibration?
Can I ask the recruiters in my resume to put the reason why I am rejected?
Python: return float 1.0 as int 1 but float 1.5 as float 1.5
Can a rocket refuel on Mars from water?
What exploit are these user agents trying to use?
Emailing HOD to enhance faculty application
AES: Why is it a good practice to use only the first 16bytes of a hash for encryption?
A reference to a well-known characterization of scattered compact spaces
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;
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
add a comment |
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
Well I'm sure the missing)infor l2_iterator in list(l2_combinations:doesn't help...
– Reedinationer
1 hour ago
add a comment |
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
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
python
edited 1 hour ago
amchugh89
595621
595621
asked 1 hour ago
Arun AranganathanArun Aranganathan
425
425
Well I'm sure the missing)infor l2_iterator in list(l2_combinations:doesn't help...
– Reedinationer
1 hour ago
add a comment |
Well I'm sure the missing)infor l2_iterator in list(l2_combinations:doesn't help...
– Reedinationer
1 hour ago
Well I'm sure the missing
) in for l2_iterator in list(l2_combinations: doesn't help...– Reedinationer
1 hour ago
Well I'm sure the missing
) in for l2_iterator in list(l2_combinations: doesn't help...– Reedinationer
1 hour ago
add a comment |
2 Answers
2
active
oldest
votes
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)
add a comment |
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)
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
@ritlew see edit.
– Alex Hall
1 hour ago
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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)
add a comment |
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)
add a comment |
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)
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)
answered 1 hour ago
chepnerchepner
260k34250343
260k34250343
add a comment |
add a comment |
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)
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
@ritlew see edit.
– Alex Hall
1 hour ago
add a comment |
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)
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
@ritlew see edit.
– Alex Hall
1 hour ago
add a comment |
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)
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)
edited 1 hour ago
answered 1 hour ago
Alex HallAlex Hall
23k32053
23k32053
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
@ritlew see edit.
– Alex Hall
1 hour ago
add a comment |
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
@ritlew see edit.
– Alex Hall
1 hour ago
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
What would be a solution to not regenerate the combinations every time?
– ritlew
1 hour ago
2
2
@ritlew see edit.
– Alex Hall
1 hour ago
@ritlew see edit.
– Alex Hall
1 hour ago
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
Well I'm sure the missing
)infor l2_iterator in list(l2_combinations:doesn't help...– Reedinationer
1 hour ago