Replace

Replace[expr,rules]

expr 全体の変換をしようとするとき,規則または規則のリストを適用する.

Replace[expr,rules,levelspec]

levelspec で指定される expr の部分に規則を適用する.

Replace[rules]

式に適用可能なReplaceの演算子形を表す.

詳細とオプション

  • 規則は,lhs->rhs またはlhs:>rhs の形式で与えられることが必要である.
  • リストになった規則を与えることもできる.この規則は,順に試行される.最初に適用されるものの結果が返される.いずれの規則も適用されない場合には,もとの expr が返される.
  • 規則がネストしたリストの中に与えられた場合,実質的に,Replaceは,内側のリストに写像されることになる.したがって,Replace[expr,{{r11,r12},{r21,},}]は,{Replace[expr,{r11,r12}],Replace[expr,{r21,}],}と同値である.
  • :>で定義された遅延型の規則には,/;条件を含むことができる.
  • Replaceは,標準的な形でレベル指定を行う.
  • nレベル 1 からレベル n
    Infinityレベル 1 から Infinity
    All0を含む全レベル
    {n}レベル n のみ
    {n1,n2}レベル n1 からレベル n2
  • Replaceでの levelspec のデフォルト値は{0}で,これは式全体に当たる.
  • 正のレベル n は,n 個の指標で指定された expr のすべての部分からなる.
  • 負のレベル-n は,深さ nexpr のすべての部分からなる.
  • レベル-1は,数,シンボル,その他の下位区分を持たないオブジェクトからなる.
  • levelspec に複数のレベルが含まれている場合,与えられた部分式中のより深いレベルの式が最初にマッチされる.
  • Heads->Trueというオプション設定では,Replaceは式の頭部と部分を含む.
  • 置換は,levelspecで指定された部分にHoldや関連するラッパーがある場合でも施される.
  • Replace[rules][expr]Replace[expr,rules]に等しい.

例題

すべて開くすべて閉じる

  (4)

Replaceはデフォルトで,完全な式のみに規則を適用する:

下位区分まではマップしない:

規則のリストのリストは結果のリストを返す:

Replaceを演算子形で使う:

可能な置換を1つ適用する:

マッチする最初の規則を使う:

各規則を別々に適用する:

スコープ  (15)

マッチする規則がないと,もとの式が返される:

レベル1で置換する:

検定関数が適用されるとTrueを与えるリスト中の要素を置換する:

ブール式を満足するリスト中の要素を置換する:

行列の要素を特定の頭部で置換する:

式の最も深い(つまり下位の部分を持たない)部分を置換する:

レベル1から3までを置換する:

レベル0から2までを置換する:

全レベルで置換する:

ReplaceRuleDelayedと共に使うこともできる:

ホールドされた式の構造的に挿入する:

置換するまで規則の右辺は評価しない:

置換する前に右辺を評価する:

Dispatchをインプレースで規則のリストに使うことができる:

Associationをインプレースで規則のリストに使うことができる:

Association中のすべての値に関数を適用する:

Associationをキーと値を逆にしたもので置換する:

Association中のすべての規則をリストに抽出する:

それ自身が連想である値を分解してレベル1で置換する:

オプション  (2)

Heads  (2)

デフォルトで,頭部はパターンに対して別々にはマッチされない:

オプションHeads->Trueを使って頭部を置換する:

Heads->Trueのとき,頭部は引数と同じ深さにあるものとして扱われる:

これは,通常レベルが扱われる方法と矛盾しない:

結果として,Heads->Trueはデフォルトのレベル指定{0}に影響を与えない:

アプリケーション  (1)

関数 f を定義する:

普通,これは最終結果に達するまで繰り返し評価される:

入力をホールドし,fDownValuesを使ってこれを置換して評価の1ステップを調べる:

さらに1レベル進む:

特性と関係  (12)

空リストにはマッチする規則がないとみなされる:

リストのリストが置換に使われた場合,結果は長さの等しいリストになる:

レベル指定All{0,-1}および{0,}に等しい:

規則が複数のレベルでマッチする場合,Replaceはマッチするすべての部分式を変換する:

置換が行われる順序を見る:

複数のレベルが与えられた場合,Replaceは深さ優先探索を使って式をスキャンする:

Replaceは,デフォルトで,式全体を置換する:

これを使って特定のレベルを置換することもできる:

ReplaceAllはマッチする任意の部分を置換する:

レベル指定がAllのとき,Replaceはすべての部分式を厳密に1回置換しようとする:

ReplaceAllは可能な最大の部分式を置換し,そこで停止する:

ReplaceRepeatedは,式が変化しなくなるまで繰り返しReplaceAllを適用する:

Replaceは,特定のレベルでパターンに対して部分をマッチする:

ReplacePartは特定の位置で部分式を書き直す:

ReplaceListは,可能なすべてのマッチを使って結果のリストを与える:

Replaceは,最初の標準的なマッチを与える:

Replaceは完全な連想を変換することができる:

しかし,連想に入った場合はキーではなく値だけを変換する:

Replaceは指定されたレベルの個々の式をマッチする:

SequenceReplaceは第1レベルの式の列をマッチする:

MatchQ[expr,lhs]Trueを返すときかつそのときに限り,Replace[expr,lhsrhs]は変換された結果を返す:

考えられる問題  (2)

規則の長い規則を適用すると時間がかかる:

Dispatchを使ったほうがはるかに速い:

連想を使って置換規則を指定することができるが,キーはVerbatimの値として扱われる:

以下と比較する:

連想と等価な規則のリストは以下である:

Wolfram Research (1988), Replace, Wolfram言語関数, https://reference.wolfram.com/language/ref/Replace.html (2014年に更新).

テキスト

Wolfram Research (1988), Replace, Wolfram言語関数, https://reference.wolfram.com/language/ref/Replace.html (2014年に更新).

CMS

Wolfram Language. 1988. "Replace." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/Replace.html.

APA

Wolfram Language. (1988). Replace. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Replace.html

BibTeX

@misc{reference.wolfram_2024_replace, author="Wolfram Research", title="{Replace}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/Replace.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_replace, organization={Wolfram Research}, title={Replace}, year={2014}, url={https://reference.wolfram.com/language/ref/Replace.html}, note=[Accessed: 22-November-2024 ]}