IDL检查数组中是否有数字

时间:2013-06-05 15:12:06

标签: if-statement idl-programming-language

我对IDL很新。

实际上,我想要做的是使用if语句检查当前索引I是否在数组中。

在Python中,它看起来如下所示:

if this_num in xartifact:
   print 'Is an x artifact'
elif this_num in yartifact:
   print 'Is a y artifact'
else:
   print 'Is neither'

我知道你可以在IDL中嵌套ifs:

IF P1 THEN S1 ELSE $

IF P2 THEN S2 ELSE $

IF PN THEN SN ELSE SX

我无法确定是否存在操作员或理智的方式。

干杯

3 个答案:

答案 0 :(得分:3)

我会使用count中的WHERE参数,类似于上面的示例:

a = 2
b = [1, 2, 3, 5]
ind = where(a eq b, count)
print, count gt 0 ? 'a in b' : 'a not in b'

答案 1 :(得分:1)

使用if语句,IDL可能有点过分。正如你所说,基本的“如果那时候就是那么”的陈述可能是这样的:

if a eq 0 then print, 'the variable a equals 0' else $
if a eq 1 then print, 'the variable a equals 1' $
else print, 'the variable is something else'

对于if语句中的多行,而不是使用$来继续该行,您可以使用以下内容:

if a eq 0 then begin
  print, 'the variable a equals 0'
  print, 'more stuff on this line'
endif else if a eq 1 then begin
  print, 'the variable a equals 1'
  print, 'another line'
endif else begin
  print, 'a is something else'
  print, 'yet another line'
endelse

最后,要评估变量是否在向量中取决于您想要做什么以及数组中的内容,但一个选项是使用where函数。一个展示其工作原理的例子:

a=2
b=[1,2,2,3]
result = where(a eq b)
print, result
if result[0] ne -1 then print, 'a is in b' $
else print, 'a is not in b'

这样做可能有更好的方法。也许是个案陈述。

答案 2 :(得分:0)

@mgalloy提供的答案肯定有效,但是有一个更简单的解决方案,它利用了整个过程,并且只涉及一行代码。

a = 2
b = [1, 2, 3, 5]

if total(b eq a) eq 1 then print, 'Yes' else print, 'No'