Part

expr[[i]]あるいはPart[expr,i]

expr の第 i 部分を与える.

expr[[-i]]

末尾から数える.

expr[[i,j,]]またはPart[expr,i,j,]

expr[[i]][[j]]と同値である.

expr[[{i1,i2,}]]

expr の部分 i1, i2, のリストを与える.

expr[[m;;n]]

m から n までの部分を与える.

expr[[m;;n;;s]]

m から n までの部分をステップ s で与える.

expr[["key"]]

連想 expr 中のキー "key"に関連する値を与える.

expr[[Key[k]]]

連想 expr 中の任意のキー k に関連する値を与える.

詳細

  • t[[spec]]=value のような割当てを行って,式中の一連の部分のうちの任意の部分を変更することができる. »
  • 式のPart 0の部分は,その式の頭部である. »
  • 部分の中の一般的な範囲には次のようなものがある.
  • expr[[m;;]]部分 m から末尾まで
    expr[[;;n]]先頭から部分 n まで
    expr[[;;,j]]j
    expr[[m1;;n1,m2;;n2]]部分行列
  • expr がリストの場合,expr[[{i1,i2,}]]は,部分のリストを与える.一般に expr の頭部は部分のリストに適用される. »
  • expr[[list1,list2,]]から,部分のネストしたリストを得ることができる.各々の部分は各リストから1つの指標を持つ.
  • listi の任意の部分がAllまたは;;の場合,そのレベルのすべての部分が保存される. »
  • リストはPart内では,ExtractMapAtPosition等の関数とは違った方法で使われることに注意.
  • exprSparseArrayオブジェクトまたはQuantityArrayあるいはSymmetrizedArrayのような構造化配列のとき,expr[[]]は対応する通常の配列における部分を返す. »
  • 形式 expr[["key"]]を使って,キーが文字列である連想から値を抽出することができる.expr[[Key[k]]]を使って任意のキーを持つ値を抽出することができる.
  • "key"およびKey[k]は,部分指定のどこにあってもよい.
  • StandardFormInputFormでは,expr[[spec]]exprspecと入力できる.
  • は,[[]],あるいは,\[LeftDoubleBracket]および \[RightDoubleBracket]. と入力できる.
  • StandardFormでは expr[[spec]]は,expr[[spec]]または exprspecとして入力される.

予備知識

  • Partは,式の指定された指標付きの部分を与える構造的な関数である.式Part[expr,i]は,短縮形のシンタックス expr[[i]]あるいは expriを使って表されることが多い.Partを使って,リストの部分,部分の数列,行列の要素,行列の行と列等を取り出すことができる.Partは,list[[k]]=newValue のように,Setを使って部分に値を割り当てる場合にも使える.
  • Partはリストと使われることが多いが,任意の種類の式に使うことができる.Partを使う場合には,式の部分は指標,指標のリスト,Spanの式,Allのいずれかを使って指定することができる.
  • よく使われるPartの特殊な操作を行うのに便利な関数には,FirstLastTakeDropRestMostがある.Positionを使うと,指定の内容が現れる式の位置を求めることができる.Extractがより特殊化された関数で,与えられたリストで指定された位置にある式の部分を抽出するのに対し,類似関数のDeleteは,指定位置から要素を削除する.
  • 数は少ないが,Partあるいは関連関数を使って,部分式にアクセスしたり分割したりできない部分が含まれる関数もある.その最もよくあるケースはComplexおよびRationalである.例えば,Complex[1,2]1+2等の数の内部表現であり,Rational[1,2]1/2等の数の内部表現である.この特性を持つ関数はアトミックであるとされ,これらにAtomQを適用した場合にはTrueが返される.

例題

すべて開くすべて閉じる

  (6)

リストの一部を抽出する:

リストの末尾から2番目の要素を得る:

一連の部分を抽出する:

キー"a"に対応する連想の部分を指定する:

部分を再割当てする:

Partはリストだけでなく,どのような式にも使うことができる:

Partは常に式のFullFormに対して働く:

スコープ  (23)

単一レベルの指定  (7)

頭部を保持しつつ複数の部分を選ぶ:

繰返しを含む部分のリストを得る:

部分1から末尾から数えた部分3まで:

短い表し方:

部分1から末尾から数えた部分3までを2のステップで:

最初から始めて2ステップで抽出された部分:

Associationオブジェクトの最初の部分:

キー1に関連付けられた部分:

連想中の連続する部分:

複数のキーに対応する部分を抽出する:

複数レベルの指定  (7)

行列の一部を取り出す:

これは,まず中央の行を抽出するものとして理解できる:

次にその行から第3列を抽出する:

行列の第2行:

部分1と部分3を取り出す:

部分1と部分3の部分2と部分3を取り出す:

連想から部分式を抽出する:

複数の部分式を抽出する:

Keyベースと数値指標の混合を使う:

任意の式の深い部分を抽出する:

Partは,SparseArrayオブジェクトについては対応する通常配列における部分を与える:

行または列は疎なベクトルとして表される:

値を設定することもできる:

Partは,構造化配列については対応する通常配列における部分を与える:

QuantityArrayからの部分は単位が付いたQuantityオブジェクトである:

部分がまだ配列の場合,その頭部は保持される:

割当て  (5)

ネストした部分に再度割り当てる:

連続する部分を再度割り当てる:

複数の部分を一度に割り当てる:

パート2とパート3をxに割り当てる:

パート1,パート3,パート4に異なる値を割り当てる:

部分には標準的な割当て操作すべてが使える:

部分の再割当てによって要素を並べ替える:

入力形  (4)

FullFormで入力する:

FullFormを使ってSpan指定を入力する:

[[]]を使って入力する:

を使って下付き文字として入力する:

特殊文字の\[LeftDoubleBracket]\[RightDoubleBracket]を使う:

アプリケーション  (6)

方程式から最初の解を抽出する:

一変数の方程式のすべての解を抽出する:

最初の1000個の素数のうちいくつが可能なそれぞれの「10を法とするbin」に入るかを数える:

同じ結果を得る別の方法:

置換を適用する:

置換を逆にする:

InversePermutationを使って直接計算で結果を確かめる:

Modをオフセット1で使って部分を循環的に取り出す:

特性と関係  (10)

式の0番目の部分は式の頭部である:

部分指定のリストを使うときは,もとの式の頭部が保持される:

これは,複数のレベルの指定を使うときでも真である:

Part[expr,{}]Head[expr][]を与える:

文字列のキーについては,Key["key"]"key"は等しい:

これは,一般的なキーには当てはまらない:

Part[expr]expr を与える:

部分0への割当ては,事実上,Applyの形式である:

@@ (Apply)を使って同じ操作を行う:

Part[expr,m;;n]は,事実上,Take[expr,{m,n}]に等しい:

同様に,Part[expr,m;;n;;s]は,事実上,Take[expr,{m,n,s}]に等しい:

Part[expr,i,j,]は,事実上,Extract[expr,{i,j,}]に等しい:

Partは長方形のブロックが抽出できる:

Extractは任意の位置にある部分のリストを返すことができる:

PermutePartは置換を違うように解釈する:

2つの解釈はInversePermutationに関連している:

考えられる問題  (5)

PositionPartで直接使える形では部分指定を返さない:

ExtractPositionが返す方法で部分指定を抽出する:

部分のリストを使うときは,連続する部分の抽出が常に直接の部分抽出と一致する訳ではない:

式のホールドされた部分がある場合は,抽出によって評価が行われることがある:

このため,直接の部分抽出と連続的な部分抽出の違いが出る:

再割当てができるのは,すでに存在する部分のみである:

値が大きい行列である共有変数を作る:

その要素にアクセスすると行列全体が繰り返しサブカーネルに転送される:

Unevaluatedを使って共有変数の一部についての特殊コードで変数が参照できるようにする:

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

テキスト

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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