请问大家有没有办法把下面的代码简化一下,目标是类似于aggregate,在一个字符串数列中,统计相同的字符数量
c = split("a"^80,"")
d = split("b"^5, "")
f = append!(c,d)
let ti = [];
t = union(f)
for i in t
tj=[]
for j in 1:length(f)
tj = push!(tj, i == f[j])
end
ti = push!(ti,sum(tj))
end
ti
end
julia> codeunits("a"^80*"b"^5) |> unique
2-element Array{UInt8,1}:
0x61
0x62
julia> codeunits("a"^80*"b"^5) |> x->[count(i->i==j, x) for j in unique(x)]
2-element Array{Int64,1}:
80
5
简洁但很慢,可以魔改一下unique,让它输出计数
1 个赞
谢谢,这个非常有效,有点看不懂了
s = split(string("a"^20,"b"^3,"c"^2),"")
s |> x->[count(i->i==j, x) for j in unique(x)]
这个|>
是pipe的意思么?
后面这个 x->[count(i->i==j, x) for j in unique(x)]
看到这个关系一下就懵比了,
最后还是看懂了,非常巧妙!!