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/
------------------------------------------------------------