是否可以在 python 一个线性三元条件运算符中放置 break

Is it possible to place break in python one liner ternary conditional operator

我想打破 python 一个班轮的其他部分的循环。

value='4,111,010.00400'
for i in value[-1:value.rfind('.')-1:-1]:
    if i in ('0', '.'):
        value=value[:-1]
    else:
        break

我写了这段代码并试图将其转换为 python 一个班轮。所以这样写

for i in value[-1:value.rfind('.')-1:-1]:
    value=value[:-1] if i in ('0', '.') else break

但无法将 break 放在那个衬垫内。是否有其他放置方式,或者是否有可能在 python oneliner 中实现上述目标?

正如您所发现的,您不能将 break 与三元运算符一起使用,原因很简单,因为 break 不是一个值。此外,虽然 if 没有 else 的语句可以放在一行中,但 else 阻止了一个很好的单行解决方案。

您的代码最多去除尾随 0 和一个句点(如果该句点之后的所有内容都是 0)。因此它等同于:

value = value.rstrip('0').rstrip('.')