Unkillable zombie blog

This blog just won't die

Apr 19, 2008

Python list comprehensions nasty behavior

Python’s list comprehension syntax is amazingly concise and easy to use and understand. It make Python even more beautiful than it already is.

However, i came upon some weird behavior today that caused a strange bug in my application.

The common way to use a list comprehension is with a variable named x eg:

my_new_list = [ x.name for x in people ]

The behavior most of us would expect (or assume to be reasonable) is for the scope of variable x to be limited within the execution of the list comprehension.

This is not the case however. If you already have defined an x variable and expect it to be the same after the list comprehension you will be disappointed (not to mention bewildered at your new,  seemingly unexplained, bug ).

I am not sure why this feature it was designed that way. I think this is a source of confusion and, as such, un-pythonic, if i may use the term :-)

Be careful when using list comprehensions to use a completely new variable.

posted at 18:38  ·   ·  python