首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试值是否在列表/数组中(Ti-Basic)

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

Stack Overflow用户
提问于 2017-10-01 22:24:06
回答 2查看 1K关注 0票数 2

是否有一种方法来测试某个值是否在列表中?在Python中,我认为您可以执行类似'if n In myList: print(“值N在列表中”)之类的操作。

我不想使用for循环单独检查每个值,除非这是唯一的选项。我用的是Ti-84加号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-02 04:57:11

如果我想得对的话,这应该是可行的。这非常简单,其中L₁是要搜索的列表,X是要查找的值。

代码语言:javascript
运行
复制
max(not(L₁-X

逐步分析:

  1. L₁-X:从列表中的所有内容中减去值。现在,如果这个列表包含一个零,它意味着我们的值在L₁中。
  2. not(L₁-X:反转列表中的所有内容。这将将所有零转换为1,将其他一切转换为零。现在,如果这个列表包含一个列表,它意味着我们的值在L₁中。如果列表全部为零,则不是。
  3. max(not(L₁-X:获取列表中的最大值。如前所述,如果该值不在L₁内,则列表将为所有零,因此最大值为零。如果L₁的值在内部,则最大值为1。

这使得检查就像下面这样简单:

代码语言:javascript
运行
复制
If max(not(L₁-X
Disp "The value was found:",X
票数 5
EN

Stack Overflow用户

发布于 2017-10-01 22:34:00

这个搜索的想法来自于TI-Basic开发人员,并且非常出色:

假设您有一个名为x的值和一个名为L的列表。

代码语言:javascript
运行
复制
: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,则搜索值不在列表中的是特定的
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46517466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档