2009-10-06 12 views
5

Ejemplo:En Mathematica, ¿cómo puedo encontrar patrones que incluyen reglas y listas?

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

Me gustaría encontrar todas las expresiones en la lista con este patrón:

_ -> {_,_} 

El primer elemento, "a" -> {{1}, 12}, está representado por este patrón.

Sin embargo, ninguna de estas expresiones funciona:

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

Cualquier consejo sería apreciado.

Respuesta

9

Lo que estamos buscando es HoldPattern:

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

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

EDIT: Esto también funciona con variables del patrón con nombre.

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

Excelente. Esto parece ser lo que estoy buscando. ¿Es posible tener variables de patrones con nombre, p. _-> {_, _ x} /; x <10 mientras usa HoldPattern? – Tony

+0

¡Excelente! Arriba dawg. – Tony

Cuestiones relacionadas