如何在一行中编写以下循环?或者这是不可能的,因为if语句?
a = listWithFancyIntegers
for i in range(len(a)):
if a[i] < 0:
a[i] = 0
else:
a[i] = 1
我不想要的是布尔值列表。
我已经在网上搜索过我是否可以使用像Lambda表达式这样的东西,但我找不到任何对我有帮助的东西。 (或者我不明白:D)
感谢您的支持。
答案 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]