在 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
每个一维数组包括1
到20
之间的5个随机采样整数。
现在我正在应用一个映射函数,其中对于 y
中的每个一维数组,排除从 1
到 20
:
的数字
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]
我有一个数组数组,叫做y
:
y=Array(Vector{Int64}, 10)
这基本上是一维数组的列表(其中 10 个),每个一维数组的长度为 5。下面是它们如何初始化的示例:
for i in 1:10
y[i]=sample(1:20, 5)
end
每个一维数组包括1
到20
之间的5个随机采样整数。
现在我正在应用一个映射函数,其中对于 y
中的每个一维数组,排除从 1
到 20
:
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]