2009-10-06 7 views
5

Exemple:Dans Mathematica, comment trouver des modèles incluant des règles et des listes?

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

Je voudrais trouver toutes les expressions dans la liste avec ce modèle:

_ -> {_,_} 

Le premier élément, "a" -> {{1}, 12}, est représenté par ce modèle.

Cependant, aucune de ces expressions travail:

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

Tout conseil serait apprécié.

Répondre

9

Qu'est-ce que vous cherchez est HoldPattern:

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

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

EDIT: Cela fonctionne également avec des variables de modèle nommées.

In[3]:= Cases[test, HoldPattern[_ -> {x_, _}] :> x] 
Out[3]= {{1}} 
+0

Excellent. Cela semble être ce que je cherche. Est-il possible d'avoir des variables de motif nommées, par ex. _-> {_, _ x} /; x <10 lors de l'utilisation de HoldPattern? – Tony

+0

Excellent! Top dawg. – Tony