DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: assoziativer Speicher

Lieber Herr Anrecht,

betrifft:
>Ich moechte einen assozativen Speicher der Form
>
>NODE[1]=a
>NODE[15]=c
>NODE[10]=b
>..
>NODE[i_Integer]=_
>
>einrichten. Kein Problem, aber wie komme ich an die Liste
>
>{{1,a},{10,b},{15,c}}.
>
>Mit ??NODE kann ich diese Information nahezu anzeigen, aber nicht
>weiterverarbeiten.
>Der Index i kann ausserdem sehr gross werden, so dass ich mit einer
>Zaehlschleife
>nicht weiterkomme.
>
>Wer kennt einen passenden Trick?


Die Antwort auf Ihre Frage lautet:

Partition[Level[DownValues[NODE],{-1}],2]


Erklaerung:

Mit DownValues[NODE] erhalten Sie in etwa die Information, die
Sie auch mit ?? aufrufen koennen. (Allerdings nur sogenannte
DownValue-Zuweisungen)

In[1]:=
DownValues[NODE]

Out[1]=
{HoldPattern[NODE[1]]:>a,HoldPattern[NODE[10]]:>b,HoldPattern[NODE[15]]:>c}

Aus dieser Liste koennen Sie mit Level[...,{-1}] die Zahlen und Symbole
herausfischen, da Sie in diesem Fall auf der untersten Eben der Listen-
struktur anzutreffen sind.

In[2]:=
Level[%,{-1}]

Out[2]=
{1,a,10,b,15,c}

Nun gilt es noch die Zahlen mit den folgenden Symbolen in Unterlisten
zusammenzufassen. Dies geschieht mit Partition[...,2].

In[3]:=
Partition[%,2]

Out[3]=
{{1,a},{10,b},{15,c}}

Ich hoffe, dass ich damit Ihre Frage treffend beantwortet haben.

MfG,  Markus van Almsick


Verweise:
assoziativer Speicher
Joerg Anrecht, 29.10.1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44