Mathematica 教程 函数 »|教程 »

# Patterns for Some Common Types of Expression

Using the objects described above, you can set up patterns for many kinds of expressions. In all cases, you must remember that the patterns must represent the structure of the expressions in Mathematica internal form, as shown by FullForm.
Especially for some common kinds of expressions, the standard output format used by Mathematica is not particularly close to the full internal form. But it is the internal form that you must use in setting up patterns.
 n_Integer an integer n x_Real an approximate real number x z_Complex a complex number z Complex[x_,y_] a complex number x+iy Complex[x_Integer,y_Integer] a complex number where both real and imaginary parts are integers (r_Rational|r_Integer) rational number or integer r Rational[n_,d_] a rational number (x_/;NumberQ[x]&&Im[x]0) a real number of any kind (x_/;NumberQ[x]) a number of any kind

Some typical patterns for numbers.

Here are the full forms of some numbers.
 Out[1]//FullForm=
The rule picks out each piece of the complex numbers.
 Out[2]=
The fact that these expressions have different full forms means that you cannot use x_+Iy_ to match a complex number.
 Out[3]//FullForm=
The pattern here matches both ordinary integers, and complex numbers where both the real and imaginary parts are integers.
 Out[4]=
As discussed in "Symbolic Computation", Mathematica puts all algebraic expressions into a standard form, in which they are written essentially as a sum of products of powers. In addition, ratios are converted into products of powers, with denominator terms having negative exponents, and differences are converted into sums with negated terms. To construct patterns for algebraic expressions, you must use this standard form. This form often differs from the way Mathematica prints out the algebraic expressions. But in all cases, you can find the full internal form using FullForm[expr].
Here is a typical algebraic expression.
 Out[5]=
This is the full internal form of the expression.
 Out[6]//FullForm=
This is what you get by applying a transformation rule to all powers in the expression.
 Out[7]=
 x_+y_ a sum of two or more terms x_+y_. a single term or a sum of terms n_Integerx_ an expression with an explicit integer multiplier a_.+b_.x_ a linear expression a+bx x_^n_ xn with n≠0, 1 x_^n_. xn with n≠0 a_.+b_.x_+c_.x_^2 a quadratic expression with nonzero linear term

Some typical patterns for algebraic expressions.

This pattern picks out linear functions of x.
 Out[8]=
 x_List or x:{___} a list x_List/;VectorQ[x] a vector containing no sublists x_List/;VectorQ[x,NumberQ] a vector of numbers x:{___List} or x:{{___}...} a list of lists x_List/;MatrixQ[x] a matrix containing no sublists x_List/;MatrixQ[x,NumberQ] a matrix of numbers x:{{_,_}...} a list of pairs

Some typical patterns for lists.

 This defines a function whose argument must be a list containing lists with either one or two elements.
The definition applies in the second and third cases.
 Out[10]=