是否可以在Python单行三元条件运算符中放置中断

Van*_*ith 4 python python-2.x python-3.x

我想打破 python oneliner 的其他部分的循环。

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

我编写了这段代码并尝试将其转换为 python oneliner。所以这样写

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

但无法在该衬里内放置断裂点。是否有任何替代方法来放置它,或者是否可以在 python oneliner 中实现上述目标?

Joh*_*man 5

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

您的代码将删除尾部0和最多一个句点(如果该句点之后的所有内容都是0)。因此它相当于:

value = value.rstrip('0').rstrip('.')
Run Code Online (Sandbox Code Playgroud)

  • 是的,但如果我能做到:“如果 x 没有其他通过则中断”:( (2认同)