[Tutor] for loop results into list

Micheal Beatty mikelbt at gmail.com
Sun Sep 5 20:51:41 CEST 2010


  On 09/05/2010 01:26 PM, Evert Rol wrote:
>> Hello all,
>>
>> I'm having a little problem figuring out how to accomplish this simple task. I'd like to take a list of 6 numbers and add every permutation of those numbers in groups of four. For example for 1, 2, 3, 4, 5, 6 add 1 + 1 + 1 +1 then 1 + 1 + 1 +2 etc. until reaching 6 + 6 + 6 + 6. Using a for loop, that was the easy part, now I'd like to take the results and count the number of times each number occurs.
>> My problem occurs when I try to create a list from the results of the for loop, it puts each individual number into its own list. I've looked everywhere for the solution to this and can find nothing to help.
>>
>> Any suggestions would be much appreciated
> If you had some code, that would be very helpful. Now it's a bit of guesswork what exactly you have (code tends to be clearer than a full paragraph or two of text).
> At least, I currently don't understand what your problem is (or what your for-loop involves).
> Eg, are you looping and calling a function recursively, do you have four nested loops (or nested list comprehensions)? Or some other convenient loop to step through all combinations?
>
> Anway, if you have a recent Python version (2.7 or 3.1), the itertools module provides a handy utiity: http://docs.python.org/py3k/library/itertools.html#itertools.combinations_with_replacement
> Eg,
>
>>>> map(sum, combinations_with_replacement(range(1,7), 4))
> [4, 5, 6, 7, 8, 9, 6, 7, 8, 9, 10, 8, 9, 10, 11, 10, 11, 12, 12, 13, 14, 7, 8, 9, 10, 11, 9, 10, 11, 12, 11, 12, 13, 13, 14, 15, 10, 11, 12, 13, 12, 13, 14, 14, 15, 16, 13, 14, 15, 15, 16, 17, 16, 17, 18, 19, 8, 9, 10, 11, 12, 10, 11, 12, 13, 12, 13, 14, 14, 15, 16, 11, 12, 13, 14, 13, 14, 15, 15, 16, 17, 14, 15, 16, 16, 17, 18, 17, 18, 19, 20, 12, 13, 14, 15, 14, 15, 16, 16, 17, 18, 15, 16, 17, 17, 18, 19, 18, 19, 20, 21, 16, 17, 18, 18, 19, 20, 19, 20, 21, 22, 20, 21, 22, 23, 24]
>
> seems to do what you want.
>
> But, I'd still say to adopt your own code first, and when you've learned from that, just use the one-liner above. You're most welcome to ask your question, best done in combination with code, actual output and expected output. Then we can point you in the right direction.
>
> Cheers,
>
>    Evert
>
Thanks Evert, here is the code.


fourdsix = [1, 2, 3, 4, 5, 6]
for i in fourdsix:
     for j in fourdsix:
         for k in fourdsix:
             for l in fourdsix:
                 fourdsix_result = [i, j, k, l]
                 attribs = sum(fourdsix_result) - min(fourdsix_result)
                 print attribs

This gives me the proper results, now it's just a matter of getting it 
into a list so I can further work with the data.
I've tried the following
attrib_list = [attribs]

and
attrib_list = []
attrib_list.append(attribs)
print attrib_list

but these both only create a list of the last number.

I'm sure there is a pre-existing module that will do all of this for me 
but I'm trying to learn by doing.

Thanks
mwb



More information about the Tutor mailing list