Wolfram mathematica 在嵌套列表中,如何测试给定的索引序列在mathematica中是否有效
在mma中,我有一个高度不规则的嵌套列表Wolfram mathematica 在嵌套列表中,如何测试给定的索引序列在mathematica中是否有效,wolfram-mathematica,Wolfram Mathematica,在mma中,我有一个高度不规则的嵌套列表myList,每当给我一个整数序列,比如任意长度的1,1,2,3,1,我都想知道 myList[[1,1,2,3,1]] 是有效的;因为如果不是,那么我会得到一个错误 Part::partw: part... does not exist 谢谢 Quiet[ Check[mylist[[1, 1, 2, 3, 1]], Print[False], Part::partd], Part::partd]; 您可以将Prin
myList
,每当给我一个整数序列,比如任意长度的1,1,2,3,1
,我都想知道
myList[[1,1,2,3,1]]
是有效的;因为如果不是,那么我会得到一个错误
Part::partw: part... does not exist
谢谢
Quiet[
Check[mylist[[1, 1, 2, 3, 1]], Print[False], Part::partd],
Part::partd];
您可以将Print[False]替换为任何其他操作
编辑
要检查partd和partw消息,语法如下:
Quiet[Check[{{{1, 3}}, {2}}[[1, 4, 2, 3, 1]],
Print[False], {Part::partd, Part::partw}],
{Part::partd, Part::partw}];
嗯 巧合的是,这是几周前在MathGroup上出现的。下面是一个我认为是最后也是最好的回复(来自Ray Koopman)的URL 它也有链接到同一线程中的早期帖子 丹尼尔·利奇布劳
Wolfram Research这里是另一种方法
Quiet[MemberQ[#, #[[1, 4, 2, 3, 1]], Infinity] &[{{{1, 3}}, {2}}]]
返回False
在检查该位置的元素(如果存在)是否在列表中后,它将返回true或false
Quiet[MemberQ[#, #[[1, 1, 2]], Infinity] &[{{{1, 3}}, {2}}]]
返回True
belisarius的回答将提供更多的低级别控制。@belisarius:这仍然不能解决我提出的一般问题。请参阅以下简单示例:
Quiet[Check[{{{1,3},{2}}[[1,1,2,3,1]],Print[False],Part::partd],Part::partd]代码>@强请重新检查。它在我的机器上运行正常。它打印错误,作为一个错误indication@bekusarius发生了什么事?如果复制/粘贴并运行它,则其行为是正确的。但是,如果我只是重新运行我最初拥有的,我会得到,{1,3}的第4部分不存在代码>。我看了一遍又一遍,发现表情都一样。为什么?这里没有以前定义的变量…@Qiang它在我的机器上连续正常运行了好几次。我用的是Mma 8。也许是版本冲突?还有人想看看这个吗?@belisarius:对不起,我表达错了。你能试试这个吗:Quiet[Check[{{{1,3},{2}[[1,4,2,3,1]],Print[False],Part::partd],Part::partd]代码>虽然这是一个非常合理的问题,但您可能仍然需要重新考虑函数的设计。如果您需要对某些部分的存在进行特殊检查,这可能意味着问题,或者至少是您当前对它的表述,不适合基于索引的方法。也许,基于规则或其他方法可以完全消除这个问题。