繁体   English   中英

谁能告诉我这个列表理解有什么问题?

[英]Can anyone tell me what is wrong with this list comprehension?

我只是在学习如何进行列表推导。 我被问到这个问题:

给定一个数字列表,返回所有偶数加倍且所有奇数变为负数的列表。

>>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]

谁能告诉我我的代码有什么问题?

我假设您根本不想更改该数字,如果它是一个奇数的负数:

output_l = [x*2 if x % 2 == 0 else x*-1 if x > 0 else x for x in input_list]

这里的关键是在列表推导中使用两个条件。 第一个将检查是否将数字加倍(如果是偶数),第二个将检查是否否定该数字(如果它是奇数正数)或者如果已经为负数则保持原样。

请记住,您不能顺序添加两个if语句。 您必须在两者之间定义一个else

试试这个

input_list = [72,26,79,70,20,68,43,-71,71,-2]
output_list=[ x*2 if x%2==0 else -1*abs(x) for x in  input_list]
print(output_list)

or:[false,true][condition] 是语法:

input_list = [72,26,79,70,20,68,43,-71,71,-2]
output_list=[[-1*abs(x),x*2] [x%2==0] for x in  input_list]
print(input_list)
print(output_list)

你的答案是在这个问题中给出的: if/else in a list comprehension?

input_list = [72, 26, 79, 70, 20, 68, 43, -71, 71, -2]
output_list = [i*2 if i % 2 == 0 else abs(i) * -1 for i in input_list]
print(output_list)

如果您使用 if 和 else 这是如何格式化它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM