if和else for list comprehension

时间:2015-08-05 17:47:40

标签: python list if-statement conditional

#!/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语句。

2 个答案:

答案 0 :(得分:2)

您可以在列表推导的左侧(即for关键字前面的语句中执行此操作:

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

答案 1 :(得分:1)

是的,这可能是一个例子:

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

This主题还提供了一些有关它的详细信息。