2017-10-01 2 views
1

Existe-t-il un moyen de tester si une valeur est dans une liste? En Python, je pense que vous pouvez faire quelque chose comme « si n dans myList: (« Valeur N est dans la liste ») print »Test si la valeur est dans list/array (Ti-Basic)

Je ne veux pas utiliser une boucle pour vérifier chaque valeur séparément, sauf si c'est la seule option. J'utilise un Ti-84 Plus.

Répondre

3

Cela devrait fonctionner en supposant que j'ai bien réfléchi. C'est très simple, où L₁ est la liste à rechercher et X est la valeur à rechercher.

max(not(L₁-X 

analyse étape par étape:

  1. L₁-X: Soustraire la valeur de tout dans la liste. Maintenant, si cette liste contient un zéro, cela signifie que notre valeur était L₁.
  2. not(L₁-X: Inversez tout dans la liste. Cela convertit tous les zéros en uns, et tout le reste en zéros. Maintenant, si cette liste en contient une, cela signifie que notre valeur était L₁. Si la liste contient tous des zéros, ce n'était pas le cas.
  3. max(not(L₁-X: Obtenez la valeur maximale dans la liste.Comme indiqué ci-dessus, la liste sera tous des zéros si la valeur ne se trouvait pas à L₁, donc la valeur maximale sera zéro. Si L₁ avait la valeur à l'intérieur, le maximum sera un.

Cela fait un chèque aussi simple que cela:

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

Wow, cela est encore plus propre que ma solution. Agréable! – the4kman

1

Cette idée pour la recherche est de TI-Basic Developer, et est tout à fait brillante:

Disons que vous avez supposer une valeur nommée x et une liste nommée L.

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

Et c'est tout!

Voici comment cela fonctionne:

abs(L-x)

  • Tout d'abord, il le nombre retranche de recherché toutes les valeurs d'une liste et obtient sa valeur absolue.

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

  • Après cela, il recherche le plus grand élément en elle, ajoute à 1 et divise 1 par elle.

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

  • Si c'est 1, que la valeur est dans la liste. Pourquoi? Parce que 1/1 + 0 est 1 (un nombre moins lui-même est toujours 0) et 0 est la valeur maximale possible pour 1/1 + x (pour les nombres positifs, bien sûr). Si le maximum est inférieur à 1, c'est certain que la valeur recherchée n'est pas dans la liste.