Next: Funktionen und Variablen für Listen, Previous: Listen, Up: Listen [Contents][Index]

#### 5.4.1 Einführung in Listen

Listen werden in Maxima mit eckigen Klammern eingegeben und angezeigt:

    [a, b, c, ...]

Die Elemente einer Liste können Zahlen, Symbole, Ausdrücke und auch Listen sein, wodurch verschachtelte Listen entstehen:

    (%i1) [1, 1/2, a, a+b, sin(x), [log(y)^2, y]];
                     1                        2
    (%o1)        [1, -, a, b + a, sin(x), [log (y), y]]
                     2

Mit den Funktionen `makelist` und `create_list` können Listen aus Ausdrücken generiert werden. Die Funktion `copylist` erzeugt eine Kopie einer Liste. Auf einzelne Elemente oder Teile von Listen kann mit den Funktionen `first`, `rest` oder `last` zugegriffen werden. Mit der Aussagefunktion `listp` kann getestet werden, ob eine Liste vorliegt. Für das Arbeiten mit Listen kennt Maxima die folgenden Funktionen:

       append        assoc     cons      copylist
       create_list   delete    eighth    endcons
       fifth         first     fourth    join
       last          length    listp     makelist
       member        ninth     pop       push
       rest          reverse   second    seventh
       sixth         sort      sublist   sublist_indices
       tenth         third

Da Maxima intern alle Ausdrücke als Listen darstellt, können viele der oben aufgeführten Funktionen nicht nur auf Maxima-Listen, sondern auch auf allgemeine Ausdrücke angewendet werden. So wird zum Beispiel die Addition der drei Symbole `a`, `b`, `c` von Maxima intern folgendermaßen als eine Lisp-Liste dargestellt:

       ((MPLUS) $A $B $C)

Der Operator der Addition ist `MPLUS` und die Symbole `$A`, `$B` und `$C` sind die Argumente des Operators. Alle Funktionen für Listen, die nur auf die Argumente wirken, können auch auf allgemeine Ausdrücke angewendet werden. Im folgenden werden zum Beispiel die Funktionen `first`, `last`, `cons` und `delete` auf eine Addition angewendet:

    (%i1) expr: a + b + c;
    (%o1)                       c + b + a
    (%i2) first(expr);
    (%o2)                           c
    (%i3) last(expr);
    (%o3)                           a
    (%i4) cons(2*x, expr);
    (%o4)                    2 x + c + b + a
    (%i5) delete(b, expr);
    (%o5)                         c + a

Weitere Beispiele für die Anwendung der Funktionen für Listen auf allgemeine Ausdrücke sind bei den einzelnen Funktionen angegeben. Eine ausführliche Beschreibung der internen Darstellung von Maxima-Ausdrücken ist in Ausdrücke enthalten.

Auf die einzelnen Elemente einer Liste kann direkt über einen Index zugegriffen werden. Bezeichnet der Index kein Element der Liste, gibt Maxima eine Fehlermeldung aus. Im Folgenden werden Beispiele gezeigt:

    (%i1) list : [a,b,c];
    (%o1)                       [a, b, c]
    (%i2) list[1];
    (%o2)                           a
    (%i3) list[2];
    (%o3)                           b
    (%i4) list[3];
    (%o4)                           c
    (%i5) list[1]: sin(x);
    (%o5)                        sin(x)
    (%i6) list[2]: cos(x);
    (%o6)                        cos(x)
    (%i7) list[3]: tan(x);
    (%o7)                        tan(x)
    (%i8) list;
    (%o8)               [sin(x), cos(x), tan(x)]

Listen können auch als Argument einer Funktion auftreten. Hat die Funktion die Eigenschaft `distribute_over`, dann wird die Funktion auf die Elemente der Liste angewendet. Dies funktioniert auch für Funktionen mit mehreren Argumenten.

    (%i1) sin([x,y,z]);
    (%o1)               [sin(x), sin(y), sin(z)]
    (%i2) mod([x,y],3);
    (%o2)                [mod(x, 3), mod(y, 3)]
    (%i3) mod([x,y],[5,7]);
    (%o3)   [[mod(x, 5), mod(x, 7)], [mod(y, 5), mod(y, 7)]]

Next: Funktionen und Variablen für Listen, Previous: Listen, Up: Listen [Contents][Index]