[Python-ideas] Ternary operators in list comprehensions

Jelle Zijlstra jelle.zijlstra at gmail.com
Thu Oct 5 11:44:47 EDT 2017


[x if x & 1 else 'even' for x in a]

An `if` at the end of the comprehension means a condition on whether to
include the value.

Also, this question would have been better asked on python-list.

2017-10-05 8:40 GMT-07:00 Jason H <jhihn at gmx.com>:

> >>> 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?
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20171005/6192feb8/attachment.html>


More information about the Python-ideas mailing list