[Tutor] for loop results into list

Micheal Beatty mikelbt at gmail.com
Sun Sep 5 22:31:26 CEST 2010


  On 09/05/2010 03:16 PM, Evert Rol wrote:
>>>>>> 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.
> <snip />
>
>>>>>>   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,
>>> I'm not sure I understand that, because now you have a subtraction here; not sure what that does.
>> It removes the lowest number in the group of 4. It's intended to replicate rolling four six sided dice, eliminating the lowest number and adding the remaining 3 dice roll results. I didn't mention it cause I felt it wasn't germane to the problem and it might needlessly complicate the situation.
> <snip />
>
>>>> attrib_list = []
>>>> attrib_list.append(attribs)
>>>> print attrib_list
>>> This one should work, unless you've put it incorrectly inside the code. But otherwise, it will create the list you're looking for.
>>> So then it's a matter of stepping through the numbers inside the list and counting their occurrences.
>> I've tried this in every place in the code, outside the loop, inside at each step of the loop and none of them get me what I want. Andre's suggestion that I put the empty list before the loop helped but it's still giving me multiple lists.
> Can you send what you currently have? Sounds like you still have the first statement at some incorrect place in your code.
>
>
Here is what I have.

# Program to determine frequency of each possible 4d6 die roll

attrib_list = []
fourdsix = [1, 2, 3, 4, 5, 6] #list of possible 1d6 die roll  results
for i in fourdsix:
     for j in fourdsix:
         for k in fourdsix:
             for l in fourdsix:
                 fourdsix_result = [i, j, k, l] # creating list from 
loop results
                 attribs = sum(fourdsix_result) - min(fourdsix_result)
                 attrib_list.append(attribs)
                 print attrib_list

This gets me multiple lists running through the loop.

Thanks
mike


More information about the Tutor mailing list