set::setps: 在部分赋值中不是一个符号。>>

Mar*_*ary 5 wolfram-mathematica

我在Mathematica中定义了一个函数,如果列表中的第 i 个值是 1,并且第 i+1 个值为 0,则该函数会切换这两个值。

我将其定义为:

f[i_, x_] := (If[x[[i]] == 1 && x[[i + 1]] == 0, x[[i]] = 1; x[[i + 1]] = 0]);
Run Code Online (Sandbox Code Playgroud)

然而,当我测试它i = 2x = {1,1,0,0}我得到以下错误:

Set::setps: {1,1,0,0} 在部分赋值中不是一个符号。>>

我不太清楚我做错了什么,因为我以为我正确地调用了所有内容。

Mar*_*ary 1

我想到了; 我不需要改变 x 本身的值。哎呀!