Julia 中如何高效移除列表中的空字符串?
Julia高效移除列表中空/空白字符串方案
你现有手写循环的逻辑是正确的,但可以用Julia内置的高阶函数实现更简洁、性能更优的效果:
匹配原代码逻辑:仅移除严格等于单个空格的字符串
直接用内置的filter函数即可,底层是类型稳定的迭代实现,性能远高于你没有做类型标注的手写循环:
new_li = filter(!=(" "), li)
如果不需要保留原数组,优先用原地修改的filter!,没有额外内存分配,效率最高:
filter!(!=(" "), li)
扩展场景:移除所有无实际内容的空白字符串
如果你需要的不是只匹配单个空格,而是要过滤掉所有无效空白内容,可以按需求选择:
- 移除严格的全空字符串
"":
new_li = filter(!isempty, li)
- 移除所有仅由空白字符组成的字符串(包括多个空格、制表符、换行符等):
new_li = filter(x -> !all(isspace, x), li)
手写循环的优化方案
如果你坚持要手写循环,只要增加类型标注和预分配内存,性能就可以和内置filter持平:
# 预分配同元素类型的数组,提前申请足够容量避免动态扩容开销 new_li = sizehint!(String[], length(li)) for i in li i != " " && push!(new_li, i) end
内容的提问来源于stack exchange,提问作者AfterFray
相关产品推荐
相关产品推荐

