Trouble with list comprehension

Gary Herron gherron at islandtraining.com
Wed Apr 9 11:46:56 EDT 2008


Shane Lillie wrote:
> I've got a bit of code that looks like this:
>
> for i in xrange(1000):
>     # shuffle the doors
>     doors = [ 'G', 'C', 'G' ]
>     random.shuffle(doors)
>
>     # save the doors that have goats (by index)
>     goats = [ x for x in range(2) if doors[x] == 'G' ]
>   

Using range(2) is wrong  since range(2) is [0,1].

You want range(3) which gives [0,1,2].

Gary Herron



> but for some reason the list comprehension is not always returning a
> list with 2 elements in it (sometimes it will be just 1 element). I've
> tried changing to a generator as well as using filter() and all 3 give
> the same sort of results. It works if I use a loop, but I'd really
> like to know what I'm doing wrong here. Everything looks like it
> should be working.
>
> Thanks in advance for any suggestions.
>   




More information about the Python-list mailing list