在 Julia 中使用 map 时如何知道迭代器的索引

How to know the index of the iterator when using map in Julia

我有一个数组数组,叫做y

y=Array(Vector{Int64}, 10)

这基本上是一维数组的列表(其中 10 个),每个一维数组的长度为 5。下面是它们如何初始化的示例:

for i in 1:10
    y[i]=sample(1:20, 5)
end

每个一维数组包括120之间的5个随机采样整数。

现在我正在应用一个映射函数,其中对于 y 中的每个一维数组,排除从 120:

的数字
map(x->setdiff(1:20, x), y)

但是,我想确定当函数应用于 y[i] 时,如果 setdiff(1:20, y[i]) 的输出包含 i,则 i 被排除在结果之外。换句话说,我想要一个像

这样工作的函数
setdiff(deleteat!(Vector(1:20),i) ,y[i])

map

我的主要问题是在map函数中是否可以访问索引。

P.S,我知道如何用comprehensions,我想知道是否可以用地图来做。

理解方式:

[setdiff(deleteat!(Vector(1:20), index), value) for (index,value) in enumerate(y)]

像这样?

map(x -> setdiff(deleteat!(Vector(1:20), x[1]),x[2]), enumerate(y))

对于你的例子给出了这个:

[2,3,4,5,7,8,9,10,11,12,13,15,17,19,20]
[1,3,5,6,7,8,9,10,11,13,16,17,18,20]
....
[1,2,4,7,8,10,11,12,13,14,15,16,17,18]
[1,2,3,5,6,8,11,12,13,14,15,16,17,19,20]