0
尋找使用等效於foo
的函數在隨機字母向量中查找字母的數字位置。Julia:找到字母的數字位置
myletters = ["a","c","b","d","z"]
foo(myletters)
# [1,3,2,4,26]
尋找使用等效於foo
的函數在隨機字母向量中查找字母的數字位置。Julia:找到字母的數字位置
myletters = ["a","c","b","d","z"]
foo(myletters)
# [1,3,2,4,26]
編輯:如果你從'a'
尋找數字距離,這裏有一個解決方案:
julia> Int.(first.(["a","c","b","d","z"])) - Int('a') + 1
5-element Array{Int64,1}:
1
3
2
4
26
它將優雅地處理unicode(這些只是後面的代碼點,因此將有更大的值)和更長的字符串(通過只看第一個字符)。首都,數字和一些符號將顯示爲負數,因爲它們的代碼點在a
之前。我想你在找sortperm
。它給你一個索引向量,如果你用它索引回原始數組,它將按照排序順序。
julia> sortperm(["a","c","b","d"])
4-element Array{Int64,1}:
1
3
2
4
我想出了幾分複雜的解決方案:
[reshape((1:26)[myletters[i] .== string.('a':'z')],1)[1] for i=1:length(myletters)]
或者使用map
map(x -> reshape((1:26)[x .== string.('a':'z')],1)[1], myletters)
我很抱歉。我最初的例子不夠清楚。我需要保持信件的主要順序。我已經更新了它。 – fsmart
哦,好的。你確定你的所有信件都會在'a'中:'z'嗎? –
那麼,我想任意的映射解決方案會有所幫助。這讓我想起前段時間我在文檔中看到的字典有一些東西('Dict')。 – fsmart