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