ネストされたリストの特定の要素を要求すると、Mathematica から奇妙な出力が返されます。
私は持っている:
testroots = {{0, 0, 0}, {0, 0, 0}}
頼むと
testroots[[0,0]]
代わりにMathematicaは言う
Symbol
これがなぜなのか、何が間違っていたのかわかりません。
ありがとう!
ネストされたリストの特定の要素を要求すると、Mathematica から奇妙な出力が返されます。
私は持っている:
testroots = {{0, 0, 0}, {0, 0, 0}}
頼むと
testroots[[0,0]]
代わりにMathematicaは言う
Symbol
これがなぜなのか、何が間違っていたのかわかりません。
ありがとう!
b.gatessucks と bill s が既に書いたように、Mathematica のリストはインデックス 1 から始まります。ただし、インデックス 0 も許可されHead
、式の を与えます。それはどういう意味ですか?
Mathematicaのリスト{a,b,c}
は、内部的には Form の式List[a, b, c]
です。あなたはそれに適用することによってそれを見ることができますFullForm
:
FullForm[{a, b, c}]
(*
==> List[a, b, c]
*)
左括弧の前の部分、ここList
では式の頭と呼ばれます。Andはリストを与えるtestroots[[0]]
と同等です。これは、完全な式で要素の前にあることを考えると、理にかなっています。Head[testroots]
List
List
しかし、あなたの表現はtestroots[[0,0]]
どうですか?リストの先頭の先頭にアクセスします。あなたのリストの先頭は ですList
。しかし、頭はList
何ですか?結局のところ、それはフォームを持っていませんHead[arg1, arg2, ...]
。
アトミック式の場合、Mathematica はアトムのタイプを表す記号を与えます。たとえば、Head[1]
is Integer
、Head["Hello"]
is String
、Head[foo]
is (が割り当てられていないとSymbol
仮定)。foo
上記の形式の式の先頭も、式の型と見なすことができることに注意してください。リストList
の型は でありa+b
、完全な形式の型Plus[a, b]
はPlus
、つまり合計です。
NowList
は記号なので、Head[List]
ですSymbol
。したがって、あなたの のような任意のリストについてはtestroots
、testroots[[0,0]]
と評価されSymbol
ます。
リストの最初の要素の最初の要素を取得するには、 を使用しますtestroots[[1,1]]
。
Mathematica のインデックスはゼロではなく 1 から始まります.したがって、testroots の [[0,0]] エントリは存在しません。を使用して最初の要素を取得できます
testroots[[1, 1]]