Mathematica - 带列表的功能

时间:2013-02-06 05:01:31

标签: list function wolfram-mathematica

我今天在 Mathematica 中遇到了这个错误:

Set::shape: "Lists {0,0,0,0,0,0,0,0,0,0} and {0,0,0,0,0,0,0,0,0,0,{1}} are not the same shape" >>

其中3个之后:

General::stop : Further output of Set::shape will be suppressed during this calculation. >>

我很困惑为什么我不能在我的零列表中添加“1”。这是因为我无法编辑传递给函数的列表吗?如果是这样,我怎么能编辑该列表并以某种方式返回或打印它?

这是我的完整代码:

notFunctioningFunction[list_] := (For[i = 1, i < 10, i++, list = Append[list, {1}]]; 
  Print[list])
list = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
notFunctioningFunction[list]

我追加“{1}”的原因是因为在我的函数中,我正在求解一个等式,并获得输出{1}的变量的值。这是我的代码:

varName / . Solve[ function1 == function2 ]

显然我是 Mathematica 的初学者所以请耐心等待:)

谢谢,

2 个答案:

答案 0 :(得分:3)

追加需要一个列表和一个元素。像这样:

 Append[{1,2,3,4},5]

如果您有两个列表,则可以使用Join。像这样:

 Join[{1,2,3,4},{5}]

这两个结果都会产生相同的结果:{1,2,3,4,5}。

答案 1 :(得分:2)

亲爱的Mathematica初学者。

首先,当你使用像

这样的东西时
{a,b} = {c,d,e};

在Mathematica中,在两个列表之间,程序有一个难点,因为这是一个用于为变量赋值的构造,它需要(除其他外)两个列表相等。

如果你想要的只是在现有的和命名的列表中添加一个“1”,一次一个,最好的结构是:

AppendTo[list, 1];

(此构造将修改变量'list')

list = Join[list, {1}];

第二:关于错误消息,它们在评估中默认打印3次,然后静音,以便一长串相同的错误消息不会使您的显示混乱。

第三,如果您需要将10个1添加到列表中,则无需在循环中构造它。你可以一次性完成:

list = Join[list, Table[1, {10}]]

或者,初学者更加神秘

list = Join[list, Array[1&, 10]]