如果在列表理解中条件为真,则使用 python 命令?
Using python command if a condition is true in list comprehension?
我想将下面的代码转换成列表理解。
for i in list:
if i>b:
i=5
else:
i=0
我尝试使用 [i if i>b 5 else 0 for i in a]
但它导致语法错误。我也试过 [i for i in a if i>b 5 else 0]
但这也导致了语法错误。
有什么解决办法吗?
您的尝试:
[i if i>b 5 else 0 for i in a]
很接近,你只想给5
而不是像这样i
:
[5 if i>b else 0 for i in a]
测试代码:
a = [1,2,3,4,5,6,7,8,9,10]
b = 3
output = [5 if i>b else 0 for i in a]
print(output)
输出:
[0, 0, 0, 5, 5, 5, 5, 5, 5, 5]
这是有效的,因为当语句计算为 True
时给出 if
之前的项目,否则给出 else
之后的值。所以:
output = NumberIfTrue if LogicStatement else NumberIfFalse
等同于:
if LogicStatement:
output = NumberIfTrue
else:
output = NumberIfFalse
你的情况:
LogicStatement = i>b
NumberIfTrue = 5
NumberIfFalse = 0
因此你需要(如上图):
5 if i>b else 0
然后您想将此应用到列表中的每个项目,添加:
for i in a
像这样:
5 if i>b else 0 for i in a
现在这是一个生成器,因为您需要一个列表,所以您必须用 []
括号将生成器括起来,以便它“生成”具有您想要的值的列表。所以只是:
[5 if i>b else 0 for i in a]
然后为了获得最终解决方案,我们只需将结果分配给 output
以便再次使用它:
output = [5 if i>b else 0 for i in a]
在你的版本中
[i if i>b 5 else 0 for i in list]
语法错误就在 i>b 之后。
你在那里有“真正的价值”,它在错误的地方。
重复您的原始代码
for i in list:
if i>b: #condition
i=5 #true action
else:
i=0 #false action
真正的答案是
[5 if i > b else 0 for i in list]
伪代码版本
[<true action> if <condition> else <false action> for i in list]
我想将下面的代码转换成列表理解。
for i in list:
if i>b:
i=5
else:
i=0
我尝试使用 [i if i>b 5 else 0 for i in a]
但它导致语法错误。我也试过 [i for i in a if i>b 5 else 0]
但这也导致了语法错误。
有什么解决办法吗?
您的尝试:
[i if i>b 5 else 0 for i in a]
很接近,你只想给5
而不是像这样i
:
[5 if i>b else 0 for i in a]
测试代码:
a = [1,2,3,4,5,6,7,8,9,10]
b = 3
output = [5 if i>b else 0 for i in a]
print(output)
输出:
[0, 0, 0, 5, 5, 5, 5, 5, 5, 5]
这是有效的,因为当语句计算为 True
时给出 if
之前的项目,否则给出 else
之后的值。所以:
output = NumberIfTrue if LogicStatement else NumberIfFalse
等同于:
if LogicStatement:
output = NumberIfTrue
else:
output = NumberIfFalse
你的情况:
LogicStatement = i>b
NumberIfTrue = 5
NumberIfFalse = 0
因此你需要(如上图):
5 if i>b else 0
然后您想将此应用到列表中的每个项目,添加:
for i in a
像这样:
5 if i>b else 0 for i in a
现在这是一个生成器,因为您需要一个列表,所以您必须用 []
括号将生成器括起来,以便它“生成”具有您想要的值的列表。所以只是:
[5 if i>b else 0 for i in a]
然后为了获得最终解决方案,我们只需将结果分配给 output
以便再次使用它:
output = [5 if i>b else 0 for i in a]
在你的版本中
[i if i>b 5 else 0 for i in list]
语法错误就在 i>b 之后。 你在那里有“真正的价值”,它在错误的地方。 重复您的原始代码
for i in list:
if i>b: #condition
i=5 #true action
else:
i=0 #false action
真正的答案是
[5 if i > b else 0 for i in list]
伪代码版本
[<true action> if <condition> else <false action> for i in list]