我想检查不存在的文件,所以我按如下方式编写代码:
MAX_ID = 43148178
def extract_ids
done = Dir['res/*.html'].map {|name| name[/\d+/].to_i}
all = (1..MAX_ID).to_a
all.delete_if { |i| done.include?(i) }
all.shuffle
end
ls res | wc -l
返回35854
。
我发现这很慢。我该如何有效地做到这一点?
答案 0 :(得分:3)
如果'done'是您希望从'all'数组中删除的项目数组,则可以执行以下操作:
all = [1,2,3,4,5,6,7,8,9,10]
done = [1,3,5]
all - done
# => [2, 4, 6, 7, 8, 9, 10]
或者,您想要更改所有数组
all -= done