当我要求嵌套列表的特定元素时,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]]'。 –