测试值是否在列表/数组中(Ti-Basic)

时间:2017-10-01 22:24:06

标签: arrays list ti-basic

有没有办法测试某个值是否在列表中? 在Python中,我认为你可以做类似的事情  '如果在myList中为n: 打印("值N在列表中。")'

我不想使用for循环分别检查每个值,除非它是唯一的选择。 我使用的是Ti-84 Plus。

2 个答案:

答案 0 :(得分:4)

假设我已经正确地思考过它,这应该可行。它非常简单,其中L₁是要搜索的列表,X是要查找的值。

max(not(L₁-X

分步分析:

  1. L₁-X:从列表中的所有内容中减去该值。现在,如果此列表包含零,则表示我们的值在L₁
  2. not(L₁-X:反转列表中的所有内容。这会将所有零转换为1,将其他所有零转换为零。现在,如果此列表包含一个,则表示我们的值在L₁。如果列表全为零,则不是。
  3. max(not(L₁-X:获取列表中的最大值。如上所述,如果值不在L₁内,则列表将全为零,因此最大值将为零。如果L₁内有值,则最大值为1。
  4. 这使检查变得如此简单:

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

答案 1 :(得分: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,则某些表示搜索到的值不在列表中。