if 和 else 用于列表理解

if and else for list comprehension

#!/usr/bin/python

x = [0, 2, 1, 1, 1, 1, 3, 3, 5, 1, 1, 4, 1, 2, 1, 2, 2, 2, 1, 7, 2, 1, 0, 3, 1, 1, 2, 0, 1, 0, 1, 1]

y = [1 for z in x if z > 0]

#WANT TO DO
#y = [1 for z in x if z > 0 else 0]

我想在 Python 中的列表理解中同时执行 if 语句和 else 语句。我怎样才能做到这一点?

我想出了 y = [int(bool(z)) for z in x],但我想知道您是否可以在列表理解中同时执行 ifelse 语句。

你可以在list comprehension的左边做(也就是for关键字前的语句:

y = [1 if z > 0 else 0 for z in x]

是的,这里有一个例子:

y = [1 if z > 0 else 'test' for z in x ]

This 线程也提供了一些关于它的更多细节。