如何在Julia中删除范围构造中的选定元素?

如何在Julia中删除范围构造中的选定元素?,julia,Julia,从中我发现,在范围构造中,无法通过数组函数找到并替换其元素。。。你怎么能这么做呢 假设我想删除range(1,step=1,stop=21)中的元素2,6,7,8,13,19。或者更一般地说,假设a是一个随机数组,其中包含范围[1,21]中的数字,并且希望删除给定范围内的这些元素。您不能从范围对象中删除,因为它是不可变的,但您可以筛选它: julia> filter(x -> x ∉ [2,6,7,8,13,19], a) 15-element Array{Int64,1}: 1

从中我发现,在范围构造中,无法通过数组函数找到并替换其元素。。。你怎么能这么做呢


假设我想删除
range(1,step=1,stop=21)
中的元素
2,6,7,8,13,19
。或者更一般地说,假设
a
是一个随机数组,其中包含范围
[1,21]
中的数字,并且希望删除给定范围内的这些元素。

您不能从范围对象中删除,因为它是不可变的,但您可以
筛选它:

julia> filter(x -> x ∉ [2,6,7,8,13,19], a)
15-element Array{Int64,1}:
  1
  3
  4
  5
  9
 10
 11
 12
 14
 15
 16
 17
 18
 20
 21

但是,如果
a
是“真实”数组,则可以使用
filter
就地运行。

另一种解决方案,如果方便的话,可以使用InvertoDices.jl软件包,该软件包导出
而非
,您只需使用索引即可:

julia> r = 1:21
1:21

julia> x = [2,6,7,8,13,19]
6-element Array{Int64,1}:
  2
  6
  7
  8
 13
 19

julia> r[Not(x)]
15-element Array{Int64,1}:
  1
  3
  4
  5
  9
 10
 11
 12
 14
 15
 16
 17
 18
 20
 21