【发布时间】:2020-04-17 03:25:11
【问题描述】:
我只是在学习如何进行列表推导。我被问到这个问题:
给定一个数字列表,返回所有偶数加倍的列表,所有奇数 数字变为负数。
>>input_list=[72, 26, 79, 70, 20, 68, 43, -71, 71, -2]
这是我编写的代码,但我不确定为什么会收到“错误输入”错误:
output_list = [i * -1 if i < 0 if i%2==1 else i * 2 for i in input_list]
谁能告诉我我的代码有什么问题?
【问题讨论】:
-
为什么你有两个
ifs,你为什么要检查i < 0?任务没有说你需要对负数做任何不同的事情。 -
我想如果“奇数变为负数”的意思是“将符号设置为负数”而不是“负数”,您可能会以不同的方式处理负输入,但这不是您的做法(也是如此) d 更容易使用
-abs(i))。 -
这能回答你的问题吗? if/else in a list comprehension?
-
python 中的
map,lambda函数仅用于处理上述情况。看看python.org/dev/peps/pep-0308
标签: python python-3.x