web-dev-qa-db-fra.com

Y a-t-il un moyen élégant de faire "pas dans" dans Julia?

J'essaie de convertir A python Script en Julia. Je vérifie que je vérifie que je fais ce code de la manière la plus optimale. Voir le code suivant:

Julia> a = [1,2,3,4,5]
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

Julia> if 1 in a
           print("1 is in a")
       end
1 is in a
Julia> if 6 not in a
           print("6 not in a")
       end
ERROR: TypeError: non-boolean (Int64) used in boolean context
Stacktrace:
 [1] top-level scope at REPL[6]:1

Julia> Push!(a, 6)
6-element Array{Int64,1}:
 1
 2
 3
 4
 5
 6
Julia> if (6 in a) == true
           print("6 in a")
       end
6 not in a
Julia> b = [1]
1-element Array{Int64,1}:
 1

Julia> if (6 in b) == true
           print("6 in b")
       end


Est-ce que je fais cela "pas dans" vérifier correctement?

8
logankilpatrick
Julia> a = [1,2,3,4,5];

Julia> 6 ∉ a
true

Le symbole Peut être saisi dans REPL en tapant \notin, Puis frappez l'onglet. Bien sûr, le symbole Est également disponible. comme une alternative à in en tapant \in et tabulation de frappe:

Julia> 6 ∈ a
false

Parfois, vous avez besoin d'une version vectorisée:

Julia> x = [2, 7];

Julia> x .∉ Ref(a)
2-element BitArray{1}:
 0
 1

Le Ref est nécessaire dans ce cas de sorte que a est traité comme un scalaire dans l'opération de radiodiffusion.

Edit :

Comme indiqué par @salchipapa et @DNF dans les commentaires, vous pouvez faire !(6 in a) Si vous préférez éviter les caractères Unicode.

15
Cameron Bieganek