2016-07-25 97 views
0

如何在一行中编写以下循环?或者,这是不可能的,因为if语句?压缩Python代码

a = listWithFancyIntegers 

for i in range(len(a)): 
    if a[i] < 0: 
     a[i] = 0 
    else: 
     a[i] = 1 

我不想拥有的是布尔值列表。

我已经在网上搜索,以检查我是否可以使用类似Lambda表达式的东西,但没有找到任何帮助我的东西。 (或者我不明白:D)

谢谢你的支持。

+0

'list_of_booleans = [value> = 0 for list_of_values]' –

回答

2
a = [0 if n < 0 else 1 for n in listWithFancyIntegers] 

编辑

我喜欢我上面写的代码,但这里的另一种方式:

a = [int(n >= 0) for n in listWithFancyIntegers] 

或者如果您偏好map以列出综合on:

a = map(lambda n: int(n >= 0), listWithFancyIntegers) 
1

这可以在一个单一的线来完成在Python

a = [0 if i < 0 else 1 for i in a]