压缩Python代码

时间:2016-07-25 07:28:55

标签: list python-2.7 loops

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

a = listWithFancyIntegers

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

我不想要的是布尔值列表。

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

感谢您的支持。

2 个答案:

答案 0 :(得分:2)

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

修改

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

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

或者如果您希望map列出理解:

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

答案 1 :(得分:1)

这可以在Python中用一行完成

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