DMUG-Archiv 2014

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

Re: AW: Position[] PatternTest

Hallo, 

On Tue, 2014-12-02 at 16:04 +0100, h.dolhaine@XXXXXXX.de wrote:
> das ist ja wirklich spannend.
> Wie könnte man denn so einen Listenkopf / Head machen?

Einfach das Beispiel von Robert nehmen und sich einen x-beliebigen
Ausdruck ausdenken. Bei Roberts Beispiel gab es eine Warnung, weil
Position versucht auf den 2. Teil des Symbols "List" zuzugreifen

List[{a,b},{a,c},{a,b}]

Also nehmen wir uns doch einfach einen Ausdruck, der einen 2. Teil
besitzt und wo durch Zufall auch noch ein "b" drinsteht: h[a, b]

Und jetzt nur noch ersetzen und Position liefert zum einen keinen Fehler
mehr und zum anderen findet es natürlich auch das vorkommende b im Kopf

Position[h[a, b][{a, b}, {a, c}, {a, b}], _?(#[[2]] == b &), {1}]

(* {{0}, {1}, {3}} *)

Viele Grüße
Patrick




>   Kann man jede Expression zum Head machen? In der Hilfe steht z.B. ,
> dass f[x][y][z] einen komplizierten Head hat. Das ist aber auch das
> einzige Beispiel.
> 
>  
> 
> Gruß  Hans
> 
>  
> 
>  
> 
>                                    
> ______________________________________________________________________
> Von: owner-demug@XXXXXXX.ch [mailto:owner-demug@XXXXXXX.ch] Im
> Auftrag von Markus van Almsick
> Gesendet: Dienstag, 2. Dezember 2014 11:34
> An: Robert Nowak
> Cc: demug@XXXXXXX.ch
> Betreff: Re: Position[] PatternTest
> 
> 
>  
> 
> Hallo Robert,
> 
>  
> 
> 
> zur Frage: Warum schaut MMA in den Head wenn ich doch levelspec {1}
> angebe?
> 
> 
>  
> 
> 
> Ein Listenkopf (Head) muss nicht einfach ein Symbol (List,
> f,Integrate, …)  enthalten,
> 
> 
> sondern kann auch aus einer verschachtelten Listenstruktur bestehen.
> In diesem Fall würde 
> 
> 
> die Level-Spezifikation auch beim Listenkopf Anwendung finden,
> 
> 
>  
> 
> 
> Gruß, Markus
> 
> 
>  
> 
> 
>  
> 
> Markus van Almsick, PhD
> Wolfram Research Consultant
> 
> 100 Trade Center Drive
> 
> 
> Champaign, Illinois 61820, USA
> 
> ph. +1 217 3980700 ext 5634  (USA)
> ph. +49 201 5207108 (Germany)
> 
> 
> email: markusa@XXXXXXX.com
> 
> 
>  
> 
> On 02 Dec 2014, at 8:26 , Robert Nowak <robert.nowak@XXXXXXX.at> wrote:
> 
> 
> 
> 
> Hallo, was geht hier schief, warum bekomme ich ein warning (MMA 7) ?
> 
> In[23]:= Position[{{a,b},{a,c},{a,b}}, _?(#[[2]]==b&), {1}]
> During evaluation of In[23]:= Part::partd: Part specification
> List[[2]] is longer than depth of object. >>
> Out[23]= {{1},{3}}
> 
> Ok, gerade gesehen das folgendes funktioniert:
> Position[{{a,b},{a,c},{a,b}}, _?(#[[2]]==b&), {1}, Heads -> False]
> 
> Doch warum schaut MMA in den Head wenn ich doch levelspec {1} angebe?
> 
> GrÌße Robert
> 
> 
> 
> 




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

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