В Mathematica, как я могу найти шаблоны, которые включают правила и списки? - PullRequest
5 голосов
/ 06 октября 2009

Пример:

test = {"a" -> {{1}, 12}, "b" -> {13}}

Я бы хотел найти все выражения в списке с этим шаблоном:

_ -> {_,_}

Первый элемент, "a" -> {{1}, 12}, представлен этим шаблоном.

Однако ни одно из этих выражений не работает:

Cases[test,_->{_,_}], Cases[test,_->_], Cases[test,Rule[_,_]], etc.

Любой совет будет оценен.

1 Ответ

9 голосов
/ 06 октября 2009

То, что вы ищете, это HoldPattern:

In[1]:= test = {"a" -> {{1}, 12}, "b" -> {13}};

In[2]:= Cases[test, HoldPattern[_ -> {_, _}]] // InputForm
Out[2]= {"a" -> {{1}, 12}}

РЕДАКТИРОВАТЬ: Это также работает с именованными переменными шаблона.

In[3]:= Cases[test, HoldPattern[_ -> {x_, _}] :> x]
Out[3]= {{1}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...