考虑一个数组,说0到4。我想测试每个元素是否在列表中,并返回一个布尔数组。调用in
会返回一个布尔值,因为该左侧数组不是右侧数组的元素:
> a = 0:4;
> a in [1, 2]
false
Julia是否具有in()
函数或in
运算符的广播版本,该运算符返回对map
的调用和lambda函数之类的数组?
> map(x -> x in [1,2], a)
5-element Array{Bool,1}:
false
true
true
false
false
答案 0 :(得分:5)
您可以使用广播,但是您必须告诉Julia不应该重复第二个参数,因此您应该这样做:
julia> in.(a, [[1,2]])
5-element BitArray{1}:
false
true
true
false
false
或
julia> in.(a, Ref{Vector{Int}}([1,2]))
5-element BitArray{1}:
false
true
true
false
false
两者都将在Julia 0.6.3和0.7下工作。
类似地,∈
运算符(\in
TAB ,与in
函数同义)允许使用中缀符号进行广播。
julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
false
true
true
false
false