ネストされたリストの特定の要素を要求すると、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]ListList
しかし、あなたの表現は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]]