过滤掉元组向量中的某个元素



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

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

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属于start,它们的j属于有效的?

期望的输出应该是如下所示的元组向量:

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)]

最新更新