我有一个特定的情况,我想做以下(实际上它比这更多涉及,但我把问题简化为本质):
>>> (lambda e: 1)(0) if (lambda e: True)(0) else (lambda e: 2)(0)
True
Run Code Online (Sandbox Code Playgroud)
这是一种难以写的方式:
>>> 1 if True else 2
1
Run Code Online (Sandbox Code Playgroud)
但实际上'1','True'和'2'是需要评估的附加表达式,需要变量'e',我为此简化代码示例设置为'0'.
请注意上面两个表达式的输出差异
>>> (lambda e: 1)(0)
1
>>> (lambda e: True)(0)
True
>>> (lambda e: 2)(0)
2
Run Code Online (Sandbox Code Playgroud)
有趣的是,这是一个特殊情况,因为如果我将'1'替换为'3',我会获得预期/期望的结果:
>>> (lambda e: 3)(0) if (lambda e: True)(0) else (lambda e: 2)(0)
3
Run Code Online (Sandbox Code Playgroud)
如果我将'1'替换为'0'(这也可能是特殊情况,因为1 == True和0 == False),这甚至是正确的
>>> (lambda e: 0)(0) if (lambda e: True)(0) else (lambda e: 2)(0)
0
Run Code Online (Sandbox Code Playgroud)
另外,如果我将'True'替换为'not False'或'not not True',它仍然有效:
>>> (lambda e: 1)(0) if …Run Code Online (Sandbox Code Playgroud) Matlab用于生成轮廓线的算法是什么?换句话说,它如何将网格上的关卡数据转换为一组线?
我想要的是:
我不需要有关底层代码的详细细节,但一般原则对我解释输出很有帮助.我contour在研究中使用(和衍生物),并希望了解此步骤中引入的数值错误.
这看起来像一个非常简单的问题,但我在Matlab的文档中找不到解释,也没有在SO或其他网站上找到任何解释.如果它变得容易找到,我很抱歉.