【问题标题】:How can I know if a number is inside a list in PARI/GP?我如何知道一个号码是否在 PARI/GP 的列表中?
【发布时间】:2015-05-25 06:38:10
【问题描述】:

我想知道一个数字是否在 PARI/GP 列表中,但我不知道该怎么做,这是我的代码:

mylist = listcreate();

... here I add some numbers with  listput(mylist,XXXX)

/* How can I do the condition in the if... */
if(mynumber in mylist,print("SUCCESS"),print("ERROR"))

我正在从 Python 迁移到 PARI/GP 我的一些脚本,我迷失在那些基本的东西上,the manual 有点难以理解。谢谢!

【问题讨论】:

  • 请看问题stackoverflow.com/questions/27753897/…。请注意,您不需要那里的“索引模式”。
  • @PiotrSemenov 谢谢!确实我之前已经阅读过这个问题和你的答案,但它谈论的是向量,而不是列表,所以我认为不可能将它与列表一起使用。
  • 这里有一个小注释以防万一:) PARI/GP 2.7.3(最新版本)中的函数select 可以很好地处理列表。请查看如何检查随机列表是否包含数字10: lst = List(vector(1000,i,random(100))); select((e) -> e == 10, lst) != []

标签: pari


【解决方案1】:

您可以测试给定值是否在列表、向量或列向量中,如下所示:

inList(list, value)=for(i=1,#list, if(list[i]==value, return(i))); 0

或效率较低的像

inlist(list, value)=#select(n->n==value, list) > 0

你的例子看起来像

if(inList(mylist, mynumber), print("SUCCESS"), print("ERROR"))

但如果您要进行大量查询,则值得使用二分搜索:

myset = Set(mylist);
if(setsearch(myset, mynumber), print("SUCCESS"), print("ERROR"))

【讨论】:

  • @iadvd:没问题——我会尽力解决所有pari 和pari-gp 的问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 2014-03-10
  • 2018-10-25
  • 1970-01-01
相关资源
最近更新 更多