考虑一个数组,比如0到4.我想测试每个元素是否在列表中并返回一个布尔数组.所述的呼叫in
返回单个布尔值,因为这左手侧阵列不是右侧数组的一个元素:
> a = 0:4;
> a in [1, 2]
false
Run Code Online (Sandbox Code Playgroud)
Julia是否有广播版本的in()
函数或in
运算符返回一个数组,如此调用map
和lambda函数?
> map(x -> x in [1,2], a)
5-element Array{Bool,1}:
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
你可以使用广播,但是你必须告诉Julia第二个参数不应该迭代,所以你应该这样做:
julia> in.(a, [[1,2]])
5-element BitArray{1}:
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
要么
julia> in.(a, Ref{Vector{Int}}([1,2]))
5-element BitArray{1}:
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
两者都将在Julia 0.6.3和0.7下工作.
类似地,?
运营商(\in
TAB与in
功能同义)允许使用中缀表示法进行广播.
julia> 0:4 .? [[1,2]]
5-element BitArray{1}:
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67 次 |
最近记录: |