во вложенном списке, как проверить, является ли данная последовательность индексации допустимой в Mathematica - PullRequest
5 голосов
/ 27 января 2011

У меня очень нерегулярный вложенный список myList в mma, всякий раз, когда мне дают целочисленную последовательность, например 1,1,2,3,1 любой длины, я хочу знать, если

myList[[1,1,2,3,1]]

действителен; потому что если это не так, то я получу сообщение об ошибке

Part::partw: part... does not exist

Спасибо.

Ответы [ 3 ]

3 голосов
/ 27 января 2011

По совпадению это произошло в MathGroup несколько недель назад. Ниже приведен URL-адрес того, что я считаю последним и лучшим ответом (от Рэя Купмана).

http://forums.wolfram.com/mathgroup/archive/2011/Jan/msg00326.html

Он также имеет ссылки на более ранние сообщения в той же теме.

Даниэль Лихтблау

Wolfram Research

3 голосов
/ 27 января 2011
   Quiet[
       Check[mylist[[1, 1, 2, 3, 1]], Print[False], Part::partd], 
   Part::partd];  

Вы можете заменить Печать [Ложь] для любого другого действия ...

Редактировать

Чтобы проверить оба значения partd и partw сообщения с синтаксисом:

Quiet[Check[{{{1, 3}}, {2}}[[1, 4, 2, 3, 1]], 
    Print[False], {Part::partd, Part::partw}], 
   {Part::partd, Part::partw}];

HTH!

0 голосов
/ 28 января 2011

Вот еще один способ сделать это.

Quiet[MemberQ[#, #[[1, 4, 2, 3, 1]], Infinity] &[{{{1, 3}}, {2}}]]

Возвращает False.

Он по существу вернет true или false после проверки, чтобы увидеть, есть ли элемент в этой позиции (если он существует) в списке.

Quiet[MemberQ[#, #[[1, 1, 2]], Infinity] &[{{{1, 3}}, {2}}]]

Возвращает True.

ответ Велисария даст более низкий уровень контроля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...