2017-06-14 109 views
1

我無法找到一個方法來做到以下在朱莉婭:如何合併數組的數組的元素朱莉婭

輸入:x= [["1","2","3"],["4","5","6"],["7","8","9"]]

所需的輸出:["1 4 7", "2 5 8","3 6 9"]

基本上,我想生成n個字符串,其中n是x數組的長度,這些字符串中的每一個都如上所示顯示其字符。

有沒有辦法做到這一點?

編輯

經過一番思考,我得到了以下的解決方案,但我不認爲這是最理想的一個。所以,我還是很高興,如果我得到一些答案

x= [["1","2","3"],["4","5","6"],["7","8","9"]] 
y= hcat(x...) 
foo(y) = mapreduce(x->string(x," "),string,y) 
mapslices(foo,y,2) 
+6

您可以使用列表理解,以及:'[加入([Y [地方]在X Y],「「)爲1:長度(x)]' – niczky12

+0

我想這是一個更好的解決方案。謝謝。 – zwlayer

+2

如果其中一個答案已經解決了您的問題,那麼您應該將其標記爲已接受:) –

回答

6

這裏有一種方法:

julia> x= [["1","2","3"],["4","5","6"],["7","8","9"]] 
3-element Array{Array{String,1},1}: 
String["1","2","3"] 
String["4","5","6"] 
String["7","8","9"] 

julia> [join(k, " ") for k in zip(x...)] 
3-element Array{String,1}: 
"1 4 7" 
"2 5 8" 
"3 6 9" 

julia> 
+0

你能解釋一下zip的功能嗎?我從文檔中讀到它,但它並不能幫助我清楚地理解這個想法。 – zwlayer

+0

查看[zip文檔](https://docs.julialang.org/en/stable/stdlib/collections/#Base.zip),除了顯示的內容外,在您自己的REPL中查看'收集(C)'。這可能會使其功能更清晰。 – rickhg12hs

1

我喜歡裏克的一個班輪,但我不得不說,我不知道你爲何尋找一種「聰明」的方式來做到這一點。 for循環是朱莉婭非常有效的,這是一個簡單的嵌套的循環:

julia> StrList = Array{String, 1}() # initialise an empty String Array 
0-element Array{String,1} 

julia> rows = length(x); 

julia> for col in 1:length(x[1]) 
     s = "";     # empty placeholder string 
     for row in 1:(rows-1); 
      s *= x[row][col] * " "; # add N-1 elements with space 
     end 
     s *= x[rows][col];  # add Nth element without space 
     push!(StrList, s); 
     end 

julia> StrList 
3-element Array{String,1}: 
"1 4 7" 
"2 5 8" 
"3 6 9"