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内では,Extract,MapAtやPosition等の関数とは違った方法で使われることに注意.
- expr がSparseArrayオブジェクトまたはQuantityArrayあるいはSymmetrizedArrayのような構造化配列のとき,expr[[…]]は対応する通常の配列における部分を返す. »
- 形式 expr[["key"]]を使って,キーが文字列である連想から値を抽出することができる.expr[[Key[k]]]を使って任意のキーを持つ値を抽出することができる.
- "key"およびKey[k]は,部分指定のどこにあってもよい.
- StandardFormとInputFormでは,expr[[spec]]は expr〚spec〛と入力できる.
- 〚と〛は,[[と]],あるいは,\[LeftDoubleBracket]および \[RightDoubleBracket]. と入力できる.
- StandardFormでは expr[[spec]]は,expr[[spec]]または expr〚spec〛として入力される.
予備知識
- Partは,式の指定された指標付きの部分を与える構造的な関数である.式Part[expr,i]は,短縮形のシンタックス expr[[i]]あるいは expr〚i〛を使って表されることが多い.Partを使って,リストの部分,部分の数列,行列の要素,行列の行と列等を取り出すことができる.Partは,list[[k]]=newValue のように,Setを使って部分に値を割り当てる場合にも使える.
- Partはリストと使われることが多いが,任意の種類の式に使うことができる.Partを使う場合には,式の部分は指標,指標のリスト,Spanの式,Allのいずれかを使って指定することができる.
- よく使われるPartの特殊な操作を行うのに便利な関数には,First,Last,Take,Drop,Rest,Mostがある.Positionを使うと,指定の内容が現れる式の位置を求めることができる.Extractがより特殊化された関数で,与えられたリストで指定された位置にある式の部分を抽出するのに対し,類似関数のDeleteは,指定位置から要素を削除する.
- 数は少ないが,Partあるいは関連関数を使って,部分式にアクセスしたり分割したりできない部分が含まれる関数もある.その最もよくあるケースはComplexおよびRationalである.例えば,Complex[1,2]は1+2等の数の内部表現であり,Rational[1,2]は1/2等の数の内部表現である.この特性を持つ関数はアトミックであるとされ,これらにAtomQを適用した場合にはTrueが返される.
例題
すべて開くすべて閉じる例 (6)
スコープ (23)
単一レベルの指定 (7)
Associationオブジェクトの最初の部分:
複数レベルの指定 (7)
Keyベースと数値指標の混合を使う:
Partは,SparseArrayオブジェクトについては対応する通常配列における部分を与える:
Partは,構造化配列については対応する通常配列における部分を与える:
QuantityArrayからの部分は単位が付いたQuantityオブジェクトである:
割当て (5)
入力形 (4)
FullFormで入力する:
アプリケーション (6)
最初の1000個の素数のうちいくつが可能なそれぞれの「10を法とするbin」に入るかを数える:
InversePermutationを使って直接計算で結果を確かめる:
Modをオフセット1で使って部分を循環的に取り出す:
特性と関係 (10)
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は任意の位置にある部分のリストを返すことができる:
2つの解釈はInversePermutationに関連している:
考えられる問題 (5)
PositionはPartで直接使える形では部分指定を返さない:
ExtractはPositionが返す方法で部分指定を抽出する:
部分のリストを使うときは,連続する部分の抽出が常に直接の部分抽出と一致する訳ではない:
式のホールドされた部分がある場合は,抽出によって評価が行われることがある:
その要素にアクセスすると行列全体が繰り返しサブカーネルに転送される:
Unevaluatedを使って共有変数の一部についての特殊コードで変数が参照できるようにする:
テキスト
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