[Python-ideas] Ternary operators in list comprehensions

Jason H jhihn at gmx.com
Thu Oct 5 11:40:32 EDT 2017


>>> a = [1,2,3]
>>> [ x for x  in a if x & 1]
[1, 3]
>>> [ x for x  in a if x & 1 else 'even']
  File "<stdin>", line 1
    [ x for x  in a if x & 1 else 'even']
                                ^
SyntaxError: invalid syntax

I expected [1, 'even', 3]

I would expect that the if expression would be able to provide alternative values through else.

The work around blows it out to:
l = []
for x in a:
  if x&1:  
    l.append(x)
  else:
    l.append('even')


Unless there is a better way?


More information about the Python-ideas mailing list