堆叠内联 For plus If else

Sam*_*man 1 python python-3.x

我写了一行应该总结除 0 之外的字符串的所有数字。在零上它应该加上 5。

怎么了

s="123450"
o=sum([int(x) for x in s if int(x) != 0 else 5])
Run Code Online (Sandbox Code Playgroud)

它给出了语法错误,但是

s="123450"
o=sum([int(x) for x in s if int(x) != 0])
Run Code Online (Sandbox Code Playgroud)

工作正常。

0x5*_*453 8

if在列表理解的末尾用作过滤器。它只能导致值被删除,而不能用其他东西替换它们。要映射值,您必须在理解中更早地移动if/ else

o=sum([int(x) if int(x) != 0 else 5 for x in s])
Run Code Online (Sandbox Code Playgroud)