2017-10-01 1 views
1

Gibt es eine Möglichkeit zu testen, ob ein Wert in einer Liste ist? In Python, ich glaube, Sie so etwas wie tun kann ‚wenn n in myList: (‚ Wert N in der Liste‘) print‘Testen, ob Wert in Liste/Array ist (Ti-Basic)

Ich will nicht ein for-Schleife verwenden, um jeden Wert zu überprüfen separat, es sei denn, es ist die einzige Option. Ich benutze ein Ti-84 Plus.

Antwort

3

Dies sollte funktionieren, vorausgesetzt, ich habe es richtig durchdacht. Es ist sehr einfach, wo L₁ ist die Liste zu suchen und X ist der Wert zu suchen.

max(not(L₁-X 

Schritt-für-Schritt-Analyse:

  1. L₁-X: der Wert von allem, was in der Liste subtrahieren. Wenn diese Liste eine Null enthält, bedeutet das, dass unser Wert L₁ ist.
  2. not(L₁-X: Alles in der Liste umkehren. Dies konvertiert alle Nullen in Einsen und alles andere in Nullen. Wenn diese Liste eine Eins enthält, bedeutet dies, dass unser Wert L₁ ist. Wenn die Liste nur aus Nullen besteht, war dies nicht der Fall.
  3. max(not(L₁-X: Holen Sie den maximalen Wert in der Liste.Wie oben erwähnt, ist die Liste nur Nullen, wenn der Wert nicht innerhalb von L₁ liegt, so dass der Maximalwert Null ist. Wenn L₁ den Wert innerhalb hatte, wird das Maximum eine Eins sein.

Dies macht eine Überprüfung, dies so einfach:

If max(not(L₁-X 
Disp "The value was found:",X 
+0

Wow, das ist sogar sauberer als meine Lösung. Nett! – the4kman

1

Diese Idee für die Suche ist aus TI-Basic Developer, und ist ziemlich genial:

Angenommen, Sie einen Wert namens x und eine Liste namens L.

:If max(1/1+(abs(L-x)))=1 
:Then 
//value is in list 
:Else 
//value is not in list 
:End 

Und das ist es!

Hier ist, wie es funktioniert:

abs(L-x)

  • Erstens ist es die gesuchte Zahl von jedem Wert einer Liste subtrahiert und erhält seinen Absolutwert.

max(1/1+(abs(L-x)))

  • Danach ist es sucht das größte Element darin, fügt sie 1 und teilt 1 durch.

:If max(1/1+(abs(L-x)))=1

  • Wenn es 1, als der Wert in der Liste ist. Warum? Weil 1/1 + 0 1 ist (eine Zahl minus selbst ist immer 0) und 0 ist der maximal mögliche Wert für 1/1 + x (für positive Zahlen natürlich). Wenn das Maximum kleiner als 1 ist, ist es bestimmte, dass der gesuchte Wert nicht in der Liste ist.