我正在尋找有效的解決方案來洗掉 Julia 串列中的空字串。
這是我的清單:
li = ["one", "two", "three", " ", "four", "five"]
我可以使用for loop洗掉空字串,如下所示:
new_li = []
for i in li
if i == " "
else
push!(new_li, i)
end
end
但我相信有更有效的方法來洗掉空字串。
uj5u.com熱心網友回復:
new_li = filter((i) -> i != " ", li)
或者
new_li = [i for i in li if i != " "]
uj5u.com熱心網友回復:
對于評論欄位,我有一些評論太長了:
首先,在構建陣列時,永遠不要像這樣啟動它:
new_li = []
它會創建一個Vector{Any},這可能會損害性能。如果要初始化一個字串向量,最好這樣寫
new_li = String[]
其次," "不是空字串!看這里:
jl> isempty(" ")
false
它是一個包含空格的非空字串。空字串將是"",沒有空格。如果你真的想洗掉空字串,你可以這樣做
filter(!isempty, li)
或者,對于就地操作,您可以使用filter!:
filter!(!isempty, li)
但是您實際上并沒有洗掉空字串,而是洗掉由一個(或多個?)空格組成的字串,也許實際上也是空字串?在這種情況下,您可以isspace與all. 這將洗掉所有只有空格的字串,包括空字串:
jl> li = ["one", "", "two", "three", " ", "four", " ", "five"];
jl> filter(s->!all(isspace, s), li)
5-element Vector{String}:
"one"
"two"
"three"
"four"
"five"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353112.html
下一篇:從創建的類中獲取所有字串
