2016-07-25 101 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]