根据 Julia 中的另一个列表查找列表索引

sto*_*ner 4 list julia

我有两个列表,A和B,B是A的子列表。A和B中的元素都是随机排序的。我正在寻找一种方法来查找 B 中元素的 A 中元素索引,可能是有序的。在Python中,以下内容似乎有效

B_list = sorted([A.index(i) for i in B])
Run Code Online (Sandbox Code Playgroud)

我不确定在 Julia 中如何实现这一点。我对这门语言很陌生。我尝试过类似的东西

B_list = sort(filter(in(B), A))
Run Code Online (Sandbox Code Playgroud)

完全没有效果,请帮忙!

sun*_*ica 6

有一个函数(受 MATLAB 启发)可以直接为您完成此操作:indexin(B, A)

julia> a = ['a', 'b', 'c', 'b', 'd', 'a'];
  
julia> b = ['a', 'b', 'c'];
  
julia> indexin(b, a)
3-element Vector{Union{Nothing, Int64}}:
 1
 2
 3

Run Code Online (Sandbox Code Playgroud)

如果您想要对索引进行排序,您可以对其进行排序:

julia> b = ['b', 'a', 'c'];

julia> indexin(b, a)
3-element Vector{Union{Nothing, Int64}}:
 2
 1
 3

julia> indexin(b, a) |> sort
3-element Vector{Union{Nothing, Int64}}:
 1
 2
 3

Run Code Online (Sandbox Code Playgroud)