mathematica中空列表的长度

sdd*_*sdd 5 wolfram-mathematica

我真的不知道为什么输出代码:

State_Values = List[];
Print[Length[{}]]
Print[Length[State_Values]];
Run Code Online (Sandbox Code Playgroud)

是:

0 
2
Run Code Online (Sandbox Code Playgroud)

无法提出任何理由.也许这是非常愚蠢的,但我看不到.谢谢.

Tim*_*Tim 10

不是傻瓜,但你犯了一个微妙的错误.下划线State_Values将其变为a Pattern,而不是a List.您可以使用该功能找到它Head[].

stateValues = List[];
Length[stateValues]
Length[{}]

Out[11]= 0

Out[12]= 0
Run Code Online (Sandbox Code Playgroud)

如您所见,这是正确和预期的.然而,介绍下划线,这一切都打破了:

state_Values = List[];
Length[state_Values]
Head[state_Values]
Head[stateValues]

Out[16]= 2

Out[17]= Pattern

Out[18]= List
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Mathematica的GUI版本,则会更加容易,因为它会以Pattern不同的方式突出显示变量.