2016-11-30 24 views
3

使用地图时知道迭代器的索引我有数组的数组,称为y如何在朱

y=Array(Vector{Int64}, 10) 

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

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

每个1维阵列包括1 5点之间随机取样的整数20

现在我将地图功能,其中对于每个在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函数中的索引。

上午,我知道如何做到这一点comprehensions,我想知道是否有可能与地图做到这一点。

理解方式:

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

回答

7

喜欢这个?

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 ]

+0

是的!这工作得很好。谢谢 –