# What is a list compression in Python?

Gary Herron gherron at islandtraining.com
Tue Jan 19 01:36:45 CET 2010

```Kit wrote:
> Thank you so much guys.
>
> Just out of curiosity: can I do something like this to "square all
> even numbers in the range 1-10"?
> print [x^2 for x in range (1,11) if x % 2 == 0]
>
> Or is there a better way of doing it? Thanks for the help, and I am
>

That's a fine way to do it, although:

xrange is slightly more efficient than range for large
sets of values.  (This isn't such a large set for it to matter.)

You can get range and xrange to count by two's, eliminating
the need for the "if" portion in this case.

The exponent operator is ** not ^, and  x*x is more efficient than x**2.

So.

print [x**2 for x in xrange(1,11,2)]

Gary Herron

> Kit.
>
> On 1月19日, 上午12時30分, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
>
>> On Mon, 18 Jan 2010 08:07:41 -0800, Kit wrote:
>>
>>> Hello Everyone, I am not sure if I have posted this question in a
>>> correct board. Can anyone please teach me:
>>>
>>> What is a list compression in Python?
>>>
>>
>> If Google is broken for you, try Yahoo, or any other search engine.
>>
>>
>>> Would you mind give me some list compression examples?
>>>
>>
>> L = []
>> for x in range(10):
>>     L.append(x**2)
>>
>> you can write:
>>
>> L = [x**2 for x in range(10)]
>>
>>
>> L = []
>> for x in range(10):
>>     if x % 2 == 0:
>>         L.append(x**2)
>>
>> you can write:
>>
>> L = [x**2 for x in range(10) if x % 2 == 0]
>>
>> --
>> Steven
>>
>
>

```