DMUG-Archiv 2009

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Gleiches reagiert nicht gleich

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.


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html