Hallo Andreas,
Ich kann mir das Verhalten im beigelegten Notebook nicht erklären.Kann
mir jemand helfen?
Die Frage entsteht, weil die Zuweisung an pp mit Zuweisungen an a bzw. c
verwechselt wird.
In[10]:= Clear[pp]
pp = {a, b, c, d}
Out[11]= {a, b, c, d}
Es ist zwar
In[5]:= pp[[{1, 3}]] == {a, c}
Out[5]= True
In[6]:= pp[[{1, 3}]] = 1
Out[6]= 1
In[7]:= pp
Out[7]= {1, b, 1, d}
Es ist wurde nicht a = 1 und c = 1 gesetzt, sondern a und c sind aus der
Liste pp hinausgeworfen und beide durch 1 ersetzt worden - mit anderen
Worten, die Zuweisung erfolgt an pp, nicht an a und c. Deshalb kann man
nicht erwarten, dass
{a, c} == {1, 1}
zu True evaluiert. Hier sieht man deutlich, worum es geht:
In[48]:= Clear[m, a, b, c, d, e, f, g, h]
m = {{a, b, c}, {d, e}, {f, g, h}};
m[[{1, 3}]] = aha;
m
Out[51]= {aha, {d, e}, aha}
m ist neu definiert:
In[74]:= FreeQ[m, a]
Out[74]= True
Bei einer Zuweisung an a ist m nicht frei von a:
In[75]:= Clear[m, a, b, c]
m = {a, {b, {c}}}; a = paul;
FreeQ[m, a]
Out[77]= False
In[78]:= a == paul
Out[78]= True
und a hat den Wert paul.
Gruss
Udo.