在Python中,三元运算符中是否可能有多个变量赋值?

2024-10-01 22:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

只是出于好奇。我想知道在Python中是否可以使用三元运算符进行多个赋值。我在想这样的事情

rval = m if (fl*fm) < 0 else lval = m

另一方面,我想知道为什么不能像上面那样编写代码。为什么不这样实现语法呢?(如果这个问题太复杂,很抱歉)

编辑:

澄清。我刚刚写了一些二分法函数https://en.wikipedia.org/wiki/Bisection_method

while(n_iterations < n_iters_max):
    m = (lival + rival)/2.0
    fm = f(m)
    if (fl*fm) < 0:
        rival = m
    else:
        lival = m

    if np.abs(rival-lival) < ival_size:
        break

    n_iterations+=1

谢谢你的建议


Tags: 代码编辑if语法运算符事情else赋值
2条回答

您可以这样做:

(rval := m) if (fl*fm) < 0 else (lval := m)

但是if-else语句的正常方式更清晰(至少现在是这样,虽然我们对:=操作符还是比较陌生),而且更合适(因为您在这里赋值,哪一个语句是正常语句,而不是有副作用的表达式更好)

The Zen of Python

虽然问题背后的思想应该得到真正的赞赏和赞扬,以及@Heap Overflow的聪明和前沿解决方案,但这似乎是一条危险的道路

你说得对,我不是“Python警察”;然而,Python的Zen在这个实现上不言自明

Explicit is better than implicit.
Simple is better than complex.
Readability counts.
There should be one and preferably only one obvious way to do it.
If the implementation is hard to explain, it's a bad idea.

为了让这篇文章成为一个答案,而不是一个漫无边际的问题,我将参考上面的引语。虽然这个想法确实很有趣

Python中的“这是个坏主意”

相关问题 更多 >

    热门问题