You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia布尔数组逐元素操作:寻找arr1真且arr2假的可行直观语法

答案

当然有更直观的Julia写法啦!你只需要给取反操作符!加上广播点(.),就能实现你想要的逻辑:

arr1 .& .!arr2

为什么这个写法可行?

在Julia中,!是标量取反操作符,默认只作用于单个布尔值。如果要对整个数组进行逐元素取反,需要用广播版本的取反操作符.!。这样一来,.!arr2会生成一个和arr2长度相同的数组,其中每个元素都是原arr2对应元素的取反结果。

然后再用广播版的按位与操作符.&,把arr1和取反后的arr2逐元素进行“且”运算,正好符合你需求的逻辑:当arr1对应元素为true且arr2对应元素为false时,结果为true。

完整示例验证

我们用你给出的数组测试一下:

arr1 = [true, false, true, true, true, false]
arr2 = [true, false, false, true, false, true]

result = arr1 .& .!arr2
# 输出结果:[false, false, true, false, true, false]

这个结果和你用算术方式convert(Array{Bool}, (arr1 .* (1 .- arr2)))得到的结果完全一致,但可读性明显更高,完全贴合你想要的直观逻辑。

另外,你也可以把取反部分用括号括起来,写法更清晰:

arr1 .& (.!arr2)

内容的提问来源于stack exchange,提问作者Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:29:30