在 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
您需要将
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