Wolfram mathematica Mathematica:如何一次应用多条规则

Wolfram mathematica Mathematica:如何一次应用多条规则,wolfram-mathematica,Wolfram Mathematica,我有一个点列表,其中每个点都是其3个坐标的列表:x、y和z。 但是坐标x和y中的一些点是“坏的”,我想清理它们。是否可以编写一条规则来实现这一点?我试过: cleanAdjustedPoints[adjustedPoints_List] := adjustedPoints /. {x_, y_, z_} /; x < 0 -> {0, y, z}; /; y > constB -> {x, constB, z}; cleanAdjustedPoints[调整点列表]:

我有一个点列表,其中每个点都是其3个坐标的列表:x、y和z。 但是坐标x和y中的一些点是“坏的”,我想清理它们。是否可以编写一条规则来实现这一点?我试过:

cleanAdjustedPoints[adjustedPoints_List] := adjustedPoints /. {x_, y_, z_}  /; x < 0 -> {0, y, z}; /; y > constB -> {x, constB, z};
cleanAdjustedPoints[调整点列表]:=adjustedPoints/。{x_,y_,z_}/;x<0->{0,y,z};/;y>constB->{x,constB,z};
我发现只有第一条规则适用于x不好的点,而y不好的点不会改变。Mathematica没有给出sintax错误,所以我认为它是正确的。
有什么建议吗?谢谢。

您只需将规则列在列表中即可。另外,请注意(
:>
)的使用,它将变量x、y和z本地化,以确保它们不会从程序中的其他位置拾取值

cleanAdjustedPoints[adjustedPoints_List] :=
  adjustedPoints /. {{x_, y_, z_} /; x < 0 :> {0, y, z},
    {x_, y_, z_} /; y > constB :> {x, constB, z}};

constB = 5;

cleanAdjustedPoints[{{-1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]
cleanAdjustedPoints[调整点列表]:=
调整点/。{x,y,z}/{x<0:>{0,y,z},
{x,y,z}/;y>constB:>{x,constB,z};
常数b=5;
清洁调整点[{-1,2,3},{4,5,6},{7,8,9}]
{0,2,3},{4,5,6},{7,5,9}


哦,非常感谢!这些规则让我疯狂…这是一个与我习惯的不同的编程范例(C++ C++ java python PHP…)。