Julia in()函数或in运算符的广播版本?

Julia in()函数或in运算符的广播版本?,julia,Julia,考虑一个数组,比如0到4。我想测试每个元素是否在一个列表中,并返回一个布尔数组。在中调用将返回一个布尔值,因为此左侧数组不是右侧数组的元素: > 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

考虑一个数组,比如0到4。我想测试每个元素是否在一个列表中,并返回一个布尔数组。在中调用
将返回一个布尔值,因为此左侧数组不是右侧数组的元素:

> 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

您可以使用广播,但必须告诉Julia第二个参数不应重复,因此您应该:

julia> in.(a, [[1,2]])
5-element BitArray{1}:
 false
  true
  true
 false
 false

两者都将在0.6.3和0.7下工作

类似地,
运算符(
选项卡中的
\与
函数中的
同义)允许使用中缀符号进行广播

julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
 false
  true
  true
 false
 false
我相信
in.(a,Ref([1,2])
就足够了(并且是等价的)。@fredrikekre no,
in.(a,Ref([1,2])
只返回一个
true
,而不是两个。在Julia中,0.7
Ref([1,2])
被弃用了,所以很快,我会说这个令人困惑的构造将被禁止。原因是
Ref([1,2])
与Julia 0.6.3中的
Ref([1,2],1)
相同,它只从
[1,2]
获取
1
julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
 false
  true
  true
 false
 false