當我要求嵌套列表的特定元素時,Mathematica給了我一個奇怪的輸出。Mathematica列表輸出
我:
testroots = {{0, 0, 0}, {0, 0, 0}}
當我問
testroots[[0,0]]
應該給我一個0,而不是數學說
Symbol
我不明白爲什麼這是或者我做錯了什麼。
謝謝!
當我要求嵌套列表的特定元素時,Mathematica給了我一個奇怪的輸出。Mathematica列表輸出
我:
testroots = {{0, 0, 0}, {0, 0, 0}}
當我問
testroots[[0,0]]
應該給我一個0,而不是數學說
Symbol
我不明白爲什麼這是或者我做錯了什麼。
謝謝!
Mathematica指數從1開始,而不是從零開始。因此,testroots的[[0,0]]條目不存在。您可以使用
testroots[[1, 1]]
由於b.gatessucks和紙幣S已經寫,數學列表索引1.然而指數0也是允許開始獲得的第一個元素,並給出了表達的Head
。這是什麼意思?
那麼,Mathematica中的列表{a,b,c}
是內部表達式List[a, b, c]
的表達式。你可以看到,通過應用FullForm
它:
FullForm[{a, b, c}]
(*
==> List[a, b, c]
*)
在左括號前面Thhe一部分,這裏List
,被稱爲表達式的頭部。 testroots[[0]]
相當於Head[testroots]
,它給出List
的列表。這是合理的,因爲在完整表達式中,List
位於元素之前。
但是,您的表情testroots[[0,0]]
?它訪問您的列表頭的頭。您的名單的頭是List
。但List
的負責人是什麼?畢竟,它沒有形式Head[arg1, arg2, ...]
。
對於原子表達式,Mathematica給出了一個描述原子的類型的符號。例如,Head[1]
是Integer
,Head["Hello"]
是String
和Head[foo]
是Symbol
(假設foo
還沒有被分配給)。請注意,上述表單的表達式的頭部也可以被視爲表達式的類型。列表的類型是List
,並且a+b
的類型,完整形式Plus[a, b]
是Plus
,也就是一個和。
現在List
是一個符號,因此Head[List]
是Symbol
。因此,對於任何列表,如testroots
,testroots[[0,0]]
將評估爲Symbol
。
要獲取列表中第一個元素的第一個元素,請使用testroots[[1,1]]
。
列表元素從1開始計數,而不是零。試試'testroots [[1,1]]'。 –