我对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
我无法确定是否存在操作员或理智的方式。
干杯
答案 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 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'