朱莉娅-按元素检查向量x的元素是否在向量y中

时间:2019-02-10 12:49:20

标签: vector julia element broadcasting

我想逐个检查(或广播)矢量x的元素是否在Julia中的矢量y中,就像函数checkin所做的那样:

x = ["one", "two", "three", "four"]
y = ["two", "three", "five", "four"]

function checkin(x,y)
    for i = 1:length(y)
        if y[i] ∈ x
            println(true)
        else 
            println(false)
        end
    end
end
checkin(x,y)

输出:

true
true
false
true

如果我输入

x .∈ y

x .in y

我收到错误

通常,我确信写9行函数存在一种更简单的方法,但是我找不到它

1 个答案:

答案 0 :(得分:4)

使用:

a = [ 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1]
result = diff(find([ 1 diff(a) 1]))

result =

 2     4     1     1     1     5     3

您必须将in.(y, Ref(x)) 包裹在x中或写Ref(x, )才能使广播始终占用[x]而不是对其进行迭代。

请注意,我已经编写了它,以便您检查x的{​​{1}}是否在y[i]中,因为这是完成参考实现的方式。