Julia:检查向量的每个元素是否在另一个列表中的最简单有效的方法? .ε 似乎不起作用

问题描述 投票:0回答:1

在 Julia 中,假设我有一个向量和一个候选列表:

x = [1, 2, 3, 4, 5]
targetlist = [1, 2]

我想迭代检查向量的每个元素是否包含在目标列表中。

使用

\in
ε 适用于一个元素:

x[1] ∈ targetlist
# true

但矢量化似乎不正确?

x .∈ targetlist
ERROR: DimensionMismatch: arrays could not be broadcast to a common size; got a dimension with lengths 5 and 2
performance julia vectorization contains
1个回答
0
投票

您需要将

targetlist
包装在
Ref
中,使其表现得像标量值:

julia> x .∈ Ref(targetlist)
5-element BitVector:
 1
 1
 0
 0
 0

此外,如果您的列表很大,您可能需要将

targetlist
转换为
Set
来进行此操作
O(n)
而不是
O(n^2)

julia> x .∈ Ref(Set(targetlist))
5-element BitVector:
 1
 1
 0
 0
 0
© www.soinside.com 2019 - 2024. All rights reserved.