DMUG-Archiv 2014

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

Re: Apply[Part[name,#] &, list] does not work properly

On 14.07.2014 12:03, Bernhard Schnizer wrote:

> Apply[Part[name,#] &, list]

mit einem konkreten Beispiel sieht man eher, was passiert:

name = {{a, b}, {c, d}};
list = {{1, 1}, {2, 1}};

In[3]:= Apply[Part[name, #] &, list]

Out[3]= {{a, b}, {a, b}}

es kommt also hier zweimal die erste Zeile. Apply ersetzt die Liste durch den Funktionsausdruck, von dem dann (wegen #) nur das erste Element, also {1,1} genommen wird. Als Zwischenausdruck ergibt sich Part[name,{1,1}], was zweimal den das erste Element der Matrix, also die erste Zeile ergibt.

Man muss aber die Elemente der Liste in den Part-Ausdruck einsetzen, also die Liste auf Stufe 2 ersetzen, und außerdem alle Elemente (##) nehmen:

In[9]:= Apply[Part[name, ##] &, list, 2]

Out[9]= {a, c}

Einfacher geht es mit Extract statt Part:

In[4]:= Map[Extract[name, #] &, list]

Out[4]= {a, c}

Extract[name,{x,y}] ist dasselbe wie Part[name,x,y]. Man braucht also hier die Liste nicht aufzulösen.

mit besten Grüßen,

Roman Mäder

--
------------------------------------------------------------
Dr. Roman E. Mäder,  Samstagernstrasse 58a, CH-8832 Wollerau
Tel: +41-44-687 4087,             http://www.mathconsult.ch/
------------------------------------------------------------



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

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