考虑一个数组,比如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下工作.
类似地,?运营商(\inTAB与in功能同义)允许使用中缀表示法进行广播.
julia> 0:4 .? [[1,2]]
5-element BitArray{1}:
false
true
true
false
false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |