2017-10-01 12 views
1

値がリストに含まれているかどうかテストする方法はありますか? 「はmyList中のn場合: プリント( 『値Nがリストにある』)」Pythonで は、私はあなたが ような何かを行うことができると思い値がリスト/配列(Ti-Basic)にあるかどうかのテスト

私は、それぞれの値をチェックするforループを使用したくありませんそれが唯一の選択肢でない限り、別々に。 私はTi-84 Plusを使用しています。

答えて

3

これは私が正しく考えていると仮定して動作するはずです。これは非常に簡単です。L₁が検索するリストで、Xが検索する値です。

max(not(L₁-X 

ステップバイステップ分析:

  1. L₁-X:リスト内のすべての値を引きます。今、このリストにゼロが含まれている場合、値がL₁であることを意味します。
  2. not(L₁-X:リスト内のすべてを反転します。これはすべてのゼロを1に変換し、それ以外は0に変換します。今、このリストに1つが含まれている場合は、値がL₁であったことを意味します。リストがすべてゼロであれば、リストはゼロではありません。
  3. max(not(L₁-X:リストの最大値を取得します。上記のように、値がL₁の範囲内にない場合、リストはすべてゼロになるため、最大値はゼロになります。 L₁の値がinsideの場合、最大値は1になります。

これは、このような単純なチェックになり:うわー

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

を、これは私のソリューションよりもさらにクリーナーです。ニース! – the4kman

1

検索にこのアイデアはTI-Basic Developerからのものであり、非常に素晴らしいです:

はあなたがxという名前の値とLという名前のリストを持っているとしましょう。

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

これだけです!ここで

は、それがどのように動作するかです:

abs(L-x)

  • まず、は、リストのすべての値から検索数を減算し、その絶対値を取得します。その後max(1/1+(abs(L-x)))

  • 、その中の最大の要素にとって 検索、は1はそれで1を分割に追加します。:If max(1/1+(abs(L-x)))=1

    • 値がリストでであるよりも、それは、1なら

    。どうして? 1/1 + 0は1であり(数字マイナス自体は常に0です)、0は1/1 + x(もちろん正の数の場合)の可能な最大値です。最大値が1より小さい場合は、検索された値がリスト内にないことがであり、特定の値がである。

関連する問題