Group List Elements according to the Input with the order of binary combination - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Group List Elements according to the Input with the order of binary combination (/thread-32191.html) Pages:
1
2
|
Group List Elements according to the Input with the order of binary combination - quest_ - Jan-26-2021 Hello, I have this code scripts: for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... #a,ap,b,bp,c,cp= variables[0],variables[1],variables[2],variables[3],variables[4],variables[5] #giving value for a,ap,b,bp,c,cp a,ap,b,bp= variables[0],variables[1],variables[2],variables[3] finallist = [(a,b),(a,bp),(ap,b),(ap,bp)] #binary combination of a,ap,b,bp,c,cp #finallist = [i for i in range(hidden_variables)] #finallist = [(a,b,c),(a,b,cp),(a,bp,c),(a,bp,cp),(ap,b,c),(ap,b,cp),(ap,bp,c),(ap,bp,cp)]I know that "variables" is already an array but after that I want to group this list according to value of "number" instead of writing by hand . For example if "number" is 2, then list will have that: finallist = [(a,b),(a,bp),(ap,b),(ap,bp)] or if "number" is 3, the list will have that: finallist = [(a,b,c),(a,b,cp),(a,bp,c),(a,bp,cp),(ap,b,c),(ap,b,cp),(ap,bp,c),(ap,bp,cp)].In this code, first I am separating variables as a ap b bp.. and after that I am making binary combination according to "number". Instead of making this step by hand, I thought maybe it could be possible to do it dynamically and I wrote the following code script but it did not give the reult that I want: subList = [variables[n:n+number] for n in range(0, len(variables*2), number)]However it did not work! For clarification: This is my code for number 2: number = 2 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp= variables[0],variables[1],variables[2],variables[3] finallist = [(a,b),(a,bp),(ap,b),(ap,bp)]THis is my code for number 3 number = 3 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp,c,cp= variables[0],variables[1],variables[2],variables[3],variables[4],variables[5] #giving value for a,ap,b,bp,c,cp finallist = [(a,b,c),(a,b,cp),(a,bp,c),(a,bp,cp),(ap,b,c),(ap,b,cp),(ap,bp,c),(ap,bp,cp)]THis is my code for number =4 number = 4 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp,c,cp,d,dp= variables[0],variables[1],variables[2],variables[3],variables[4],variables[5] ,variables[6],variables[7]#giving value for a,ap,b,bp,c,cp finallist = [(a,b,c,d),(a,b,c,dp),(a,b,cp,d),....]#I am not writingAnd I am looking for a way to create finallist dynamically RE: Group List Elements with the order of binary combinations - Larz60+ - Jan-26-2021 Quote:However it did not work!Please elaborate and post any error messages ( complete and unaltered in error tags ) RE: Group List Elements with the order of binary combinations - quest_ - Jan-26-2021 (Jan-26-2021, 10:19 PM)Larz60+ Wrote:Quote:However it did not work!Please elaborate and post any error messages ( complete and unaltered in error tags ) I should get this result(and with old method I can get this result) [(0, 0), (0, 0), (0, 0), (0, 0)] [(0, 0), (0, 1), (0, 0), (0, 1)] [(0, 1), (0, 0), (0, 1), (0, 0)] [(0, 1), (0, 1), (0, 1), (0, 1)] [(0, 0), (0, 0), (1, 0), (1, 0)] [(0, 0), (0, 1), (1, 0), (1, 1)] [(0, 1), (0, 0), (1, 1), (1, 0)] [(0, 1), (0, 1), (1, 1), (1, 1)] [(1, 0), (1, 0), (0, 0), (0, 0)] [(1, 0), (1, 1), (0, 0), (0, 1)] [(1, 1), (1, 0), (0, 1), (0, 0)] [(1, 1), (1, 1), (0, 1), (0, 1)] [(1, 0), (1, 0), (1, 0), (1, 0)] [(1, 0), (1, 1), (1, 0), (1, 1)] [(1, 1), (1, 0), (1, 1), (1, 0)] [(1, 1), (1, 1), (1, 1), (1, 1)]However when I try to do this code, dynamically(with subList script), I am getting this result: [(0, 0), (0, 0), (), ()] [(0, 0), (0, 1), (), ()] [(0, 0), (1, 0), (), ()] [(0, 0), (1, 1), (), ()] [(0, 1), (0, 0), (), ()] [(0, 1), (0, 1), (), ()] [(0, 1), (1, 0), (), ()] [(0, 1), (1, 1), (), ()] [(1, 0), (0, 0), (), ()] [(1, 0), (0, 1), (), ()] [(1, 0), (1, 0), (), ()] [(1, 0), (1, 1), (), ()] [(1, 1), (0, 0), (), ()] [(1, 1), (0, 1), (), ()] [(1, 1), (1, 0), (), ()] [(1, 1), (1, 1), (), ()] RE: Group List Elements with the order of binary combinations - Larz60+ - Jan-27-2021 To achieve list as you present, what are the values for number? RE: Group List Elements with the order of binary combinations - quest_ - Jan-27-2021 (Jan-27-2021, 02:36 AM)Larz60+ Wrote: To achieve list as you present, what are the values for number?Number (for these values ) is an integer and its value is 2 for list that I presented above. So I have 4 variable(number*2) and I will have pair binary combinations of these 4 variables (a,b),(a,bp),(ap,b),(ap,bp) If number would be 3, this time I would have 6 variable and as a list I would have the triple binary combination of these 6 variables : (a,b,c),(a,b,cp),(a,bp,c),(a,bp,cp),(ap,b,c),(ap,b,cp),(ap,bp,c),(ap,bp,cp) RE: Group List Elements with the order of binary combinations - bowlofred - Jan-27-2021 I'm not sure where the variables are coming from, but you can pass them into itertools.product to get the list that you want from them. >>> from itertools import product >>> list(product(("a","ap"), ("b", "bp"), ("c", "cp"))) [('a', 'b', 'c'), ('a', 'b', 'cp'), ('a', 'bp', 'c'), ('a', 'bp', 'cp'), ('ap', 'b', 'c'), ('ap', 'b', 'cp'), ('ap', 'bp', 'c'), ('ap', 'bp', 'cp')] RE: Group List Elements with the order of binary combinations - quest_ - Jan-27-2021 This is the problem already. I do not want to write these variables by hand! Probably I could not explain my problem to you I just want to do these 2 line dynamically: a,ap,b,bp= variables[0],variables[1],variables[2],variables[3] finallist = [(a,b),(a,bp),(ap,b),(ap,bp)]These a ap b bp are coming from this line for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011...."variables" includes actually a ap b bp... Ok I am writing from the beginning This is my code for number 2: number = 2 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp= variables[0],variables[1],variables[2],variables[3] finallist = [(a,b),(a,bp),(ap,b),(ap,bp)]THis is my code for number 3 number = 3 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp,c,cp= variables[0],variables[1],variables[2],variables[3],variables[4],variables[5] #giving value for a,ap,b,bp,c,cp finallist = [(a,b,c),(a,b,cp),(a,bp,c),(a,bp,cp),(ap,b,c),(ap,b,cp),(ap,bp,c),(ap,bp,cp)]THis is my code for number =4 number = 4 for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... a,ap,b,bp,c,cp,d,dp= variables[0],variables[1],variables[2],variables[3],variables[4],variables[5] ,variables[6],variables[7]#giving value for a,ap,b,bp,c,cp finallist = [(a,b,c,d),(a,b,c,dp),(a,b,cp,d),....]#I am not writingAnd I am looking for a way to create finallist dynamically RE: Group List Elements according to the Input with the order of binary combination - bowlofred - Jan-27-2021 Your information is already stored in the list variables . I wouldn't move the data to other names. Maybe something like this? from itertools import product from more_itertools import grouper import string # create the "data" number_pairs = 3 variables = list(string.ascii_uppercase[:number_pairs * 2]) print(f"variables data starts as {variables}") number = len(variables) groups = grouper(variables, 2) finallist = product(*groups) print(list(finallist)) Change number_pairs make a bigger list, and the the product is created from whatever is in the list.
RE: Group List Elements according to the Input with the order of binary combination - quest_ - Jan-27-2021 (Jan-27-2021, 04:40 PM)bowlofred Wrote: Your information is already stored in the list My variables are not string. They are integer! So I changed the code anf it did not worked! for variables in itertools.product([0, 1], repeat=(number*2)): # set of variables for a,ap,b,bp,c,cp like 000000 000001 000011.... groups = grouper(variables, 2) finallist2 =list( product(*groups)) print(finallist2)I got this error
RE: Group List Elements according to the Input with the order of binary combination - nilamo - Jan-27-2021 What's the full error? What is the error telling you is an int instead of an iterable? |