过滤掉元组向量的某些元素

Filtering out some element of a vector of tuples

我有一个非常大的元组向量,需要根据某些条件(条件)提取其中的一些。

也就是说,如果元组的第一个和第二个元素属于我们要保存的其他向量,否则不保存。例如,考虑以下我们有两个向量的向量(即开始和有效)

my_tuple = [(1, 2), (1, 3), (1, 5), (2, 3), (3, 4), (3, 5), (4, 1), (4, 5), (5, 2)]
starts = [[2, 8, 3, 4] , [1,2]]
valid = [ [2,3,6,8], [1,3,4,5] ]

我怎样才能只在 my_links 中包含那些 i 属于 startj 属于有效的元组?

所需的输出应该是一个元组向量,如下所示:

my_tuple = [(1, 2), (1, 3), (1, 5), (2, 3), (3, 4), (3, 5), (4, 1), (4, 5), (5, 2)]
starts = [[2, 8, 3, 4] , [1,2]]
valid = [ [2,3,6,8], [1,3,4,5] ]
##############Would like an OTUPUT like:

[ [(2,3)], [(1,3) , (1,5), (2,3)] ] 

基本上,我要过滤的是在起始向量和有效向量中遍历每对向量(在本例中我们必须配对[2, 8, 3, 4] and [2,3,6,8] -- [1,2] and [1,3,4,5]),然后将它们组合起来my_tuples

中的元组

我试过发出这些命令,但没有用,你有什么建议?

new_tuple = [(i,j) for (i,j) in my_links if ( i in starts && j in valid) ]
new_tuple = [(i,j) for (i,j) in my_links if ( i in starts , j in valid) ]

这是你想要的吗?

julia> [filter(t -> t[1] in starts[i] && t[2] in valid[i], my_tuple) for i in eachindex(starts, valid)]
2-element Vector{Vector{Tuple{Int64, Int64}}}:
 [(2, 3)]
 [(1, 3), (1, 5), (2, 3)]