[Python-ideas] Ternary operators in list comprehensions

Steven D'Aprano steve at pearwood.info
Thu Oct 5 13:00:22 EDT 2017

On Thu, Oct 05, 2017 at 05:40:32PM +0200, Jason H wrote:
> >>> 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

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

The if clause in the list comprehension determines which items are 
included, and there is no "else" allowed. You don't want to skip any 
values: the list comp should have the same number of items as "a" 
(namely, 3) the comprehension if clause is inappropriate.

Instead, you want the value in the comprehension to conditionally depend 
on x.

By the way, this list is for suggesting improvements and new 
functionality to the language, not for asking for help. You should 
consider asking your questions on python-list or tutor mailing lists 


More information about the Python-ideas mailing list