在布尔数组上应用`&`

时间:2018-05-24 15:00:32

标签: julia

我有一个布尔值数组,我想得到逻辑和所有元素。最有效的方法是什么?

我试过

&([true,false,false]...)

但它会引发错误:

syntax: malformed expression

令人惊讶(至少对我而言)以下表达

|([true,false,false]...)

评估为true。那我该怎么做?现在我使用一堆nots来做到这一点,但这非常不令人满意。

这实际上是否比循环遍历所有元素更好?

1 个答案:

答案 0 :(得分:1)

&的这种行为很可能是由于已弃用的ccall功能造成的,其中&用于变量前面。正如上面的评论中所解释的那样:

  • 您可以将&括在括号中,使其按预期工作(&)([true,false,false]...);但是,这是没有效率的,因为你已经传递了传递的参数;
  • 如果您的参数都是Boll,那么all函数是推荐的执行逻辑和的方法;
  • 如果你需要按位和,那么reduce(&, [true,false,false])就像phg指示的那样是一个很好的解决方案。