nom*_*ize 5 arrays functional-programming higher-order-functions julia
我要创建一个单行衬里,根据一组值过滤一个数组。这意味着我想遍历 A 的每个元素并与 B 的元素进行比较。
例如:什么是安全的饮料?
A = ["water";"beer";"ammonia";"bleach";"lemonade"]
B = ["water";"beer"; "lemonade"]
Run Code Online (Sandbox Code Playgroud)
我把这个怪物放在一起,但是,我希望有人有一个更优雅的方法:
julia> vcat(filter(w->length(w)!= 0, map(y->filter(z->z!="",(map(x-> begin x==y ? x = y : x = "" end,B))),A))...)
3-element Array{String,1}:
"water"
"beer"
"lemonade"
Run Code Online (Sandbox Code Playgroud)
您可以使用filter迭代可用饮料并in检查当前元素是否在安全饮料列表中:
julia> drinks = ["water", "beer", "bleach"];
julia> safe = ["beer", "lemonade", "water"];
julia> filter(in(safe), drinks)
2-element Array{String,1}:
"water"
"beer"
Run Code Online (Sandbox Code Playgroud)