目前,我实现了这样的目标:
b = a;
b(b > 0) = 1;
b(b < 0) = -1;
这对我有用但似乎不优雅。当然有更好的方法吗?一个班轮?
答案 0 :(得分:3)
b=sign(a);
?
这也应该这样做。
答案 1 :(得分:2)
安德的回答是我要在这里回答的问题。这是另一个作为心理锻炼的人。您可以使用def bar():
exec("data = [1, 2, 3]")
return vars()["data"]
bar() # Returns [1, 2, 3]
运算符实现相同的功能:
logical
上述表达式的优雅是这样的,对于除{0}之外的任何b = (a > 0) - (a < 0);
值,只有等式的一部分是&#34; on&#34;在任何给定的时间。如果a
的任何值为正,则输出将为a
logical
,因为等式的左侧会激活,而右侧则不会。同样,如果true
的任何值为负数,则等式的右侧会激活并评估为a
,而左侧则不会。右侧有一个负号,因此这会合并到-1。这与左侧的所有组合都合并到true
精度数组,从而完成了我们的输出。当double
的任何值等于0时,检查表达式给出的内容也是谨慎的。由于这两个表达式都不会激活,因此对于两个表达式,这将评估为a
logical
,和false
合并为0,这是我们想要的结果。
false - false