[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
37.1 Introducción a las listas | ||
37.2 Funciones y variables para listas |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Las listas son bloques de construcción básica para Maxima y Lisp. Todos los tipos de datos diferentes a los arreglos, tablas mixtas o números son representados como listas Lisp, estas listas Lisp tienen la forma
((MPLUS) $A 2)
para indicar la expresión a+2
. Al nivel de Maxima se observará
la notación infija a+2
. Maxima también tiene listas con el formato
[1, 2, 7, x+y]
para una lista de 4 elementos. Internamente esto se corresponde con una lista Lisp de la forma
((MLIST) 1 2 7 ((MPLUS) $X $Y ))
El elemento que denota el tipo de expresión en Maxima es también una lista, la cual tras ser analizada y simplificada tomará la forma
((MLIST SIMP) 1 2 7 ((MPLUS SIMP) $X $Y))
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Devuelve una lista cuyos elementos son los de la lista lista_1 seguidos de los de lista_2, ... La función append
también opera con expresiones generales, como la llamada append (f(a,b), f(c,d,e));
, de la que se obtiene f(a,b,c,d,e)
.
Tecléese example(append);
para ver un ejemplo.
Esta función busca la clave en el lado derecho de la lista, la cual es de la forma [x,y,z,...]
, donde cada elemento es una expresión formada por un operador binario y dos elementos. Por ejemplo, x=1
, 2^3
, [a,b]
etc. La clave se compara con el primer operando. La función assoc
devuelve el segundo operando si se encuentra con que la clave
coincide. Si la clave
no coincide entonces devuelve el valor valor_por_defecto. El argumento valor_por_defecto es opcional; en caso de no estar presente, se devolverá false
.
Devuelve true
si expr es un átomo (número, nombre o cadena alfanumérica) y false
en caso contario. Así, atom(5)
devolverá true
, mientras que atom(a[1])
y atom(sin(x))
darán como resultado false
(dando por hecho que tanto a[1]
como x
no tienen valores asignados).
Devuelve una nueva lista en la que el elemento expr ocupa la primera posición, seguido de los elementos de lista. La función cons
también opera con otro tipo de expresiones, como cons(x, f(a,b,c));
-> f(x,a,b,c)
.
Devuelve una copia de la lista.
Crea una lista mediante la evaluación de form con x_1 tomando cada uno de los valores de list_1, para cada uno de estos valores liga x_2 con cada elemento de list_2, .... El número de elementos en el resultado será el producto del número de elementos en cada lista. Cada variable x_i debe ser un símbolo y no será evaluado. La lista de argumentos será evaluada una vez al comienzo de la iteración.
Por ejemplo:
(%i1) create_list(x^i,i,[1,3,7]); 3 7 (%o1) [x, x , x ]
Con una doble iteración:
(%i1) create_list([i,j],i,[a,b],j,[e,f,h]); (%o1) [[a, e], [a, f], [a, h], [b, e], [b, f], [b, h]]
En lugar de list_i se pueden suministrar dos argumentos cada uno de los cuales debería poder evaluarse a un número, los cuales serán los límites inferior y superior, ambos inclusive, para cada iteración.
Por ejemplo:
(%i1) create_list([i,j],i,[1,2,3],j,1,i); (%o1) [[1, 1], [2, 1], [2, 2], [3, 1], [3, 2], [3, 3]]
Nótese que los límites o lista para la variable j
pueden depender
del valor actual de i
.
Elimina las expresiones expr_1 de expr_2. La expresión expr_1 a eliminar puede ser un sumando de expr_2 (en caso de que ésta sea una suma) o un factor de expr_2 (si se trata de un producto).
(%i1) delete(sin(x), x+sin(x)+y); (%o1) y + x
La llamada delete(expr_1, expr_2, n)
elimina las primeras n apariciones de expr_1 en expr_2. En caso de que expr_1 aparezca menos de n veces dentro de la expresión de referencia expr_2 entonces se eliminan todas ellas.
(%i1) delete(a, f(a,b,c,d,a)); (%o1) f(b, c, d) (%i2) delete(a, f(a,b,a,c,d,a), 2); (%o2) f(b, c, d, a)
Devuelve el octavo elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve una nueva lista formada por los elementos de lista
seguidos de los de expr. La función endcons
también opera con expresiones generales, por ejemplo endcons(x, f(a,b,c));
-> f(a,b,c,x)
.
Devuelve el quinto elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve la primera parte de expr, que puede consistir en el primer elemento de una lista, la primera fila de una matriz, el primer término de una suma, etc. Nótese que tanto first
como sus funciones relacionadas, rest
y last
, operan sobre la forma en la que expr es mostrada por Maxima, no sobre la forma en la que es introducida la expresión. Sin embargo, cuando la variable inflag
toma el valor true
estas funciones tendrán en cuenta el formato interno de expr. Téngase en cuenta que el simplificador reordena las expresiones. Así, first(x+y)
devolverá x
si inflag
vale true
y y
cuando inflag
tome el valor false
(first(y+x)
devuelve el mismo resultado). Las funciones second
... tenth
devuelven desde el segundo hasta el décimo elemento del argumento de entrada.
Devuelve el cuarto elemento de la lista o expresión expr. Véase first
para más detalles.
Recupera la propiedad de usuario indicada por i asociada al átomo a o devuelve false
si a no tiene la propiedad i.
La función get
evalúa sus argumentos.
(%i1) put (%e, 'transcendental, 'type); (%o1) transcendental (%i2) put (%pi, 'transcendental, 'type)$ (%i3) put (%i, 'algebraic, 'type)$ (%i4) typeof (expr) := block ([q], if numberp (expr) then return ('algebraic), if not atom (expr) then return (maplist ('typeof, expr)), q: get (expr, 'type), if q=false then errcatch (error(expr,"is not numeric.")) else q)$ (%i5) typeof (2*%e + x*%pi); x is not numeric. (%o5) [[transcendental, []], [algebraic, transcendental]] (%i6) typeof (2*%e + %pi); (%o6) [transcendental, [algebraic, transcendental]]
Crea una nueva lista con los elementos de las listas l y m alternados.
El resultado tiene como elementos [l[1], m[1], l[2], m[2], ...]
.
Las listas l y m pueden contener cualquier tipo de elementos.
Si las listas son de diferente longitud, join
ignora los elementos sobrantes de la lista más larga.
Maxima da error si o bien l o m no son listas.
Ejemplos:
(%i1) L1: [a, sin(b), c!, d - 1]; (%o1) [a, sin(b), c!, d - 1] (%i2) join (L1, [1, 2, 3, 4]); (%o2) [a, 1, sin(b), 2, c!, 3, d - 1, 4] (%i3) join (L1, [aa, bb, cc, dd, ee, ff]); (%o3) [a, aa, sin(b), bb, c!, cc, d - 1, dd]
Devuelve la última parte (término, fila, elemento, etc.) de expr.
Devuelve (por defecto) el número de partes de que consta expr en la versión correspondiente a la que muestra. En el caso de listas, se devuelve el número de elementos, si se trata de matrices el número de filas y se se trata de sumas el número de términos o sumandos (véase dispform
).
La función length
se ve afectada por el valor de la variable inflag
. Así, length(a/(b*c));
devuelve 2 si inflag
vale false
(dando por hecho que exptdispflag
vale true
), pero devuelve 3 si inflag
vale true
(ya que la representación interna es a*b^-1*c^-1
).
Valor por defecto: true
Cuando vale false
provoca que no se realicen operaciones aritméticas con listas; cuando vale true
, las operaciones con listas y matrices son contagiosas, en el sentido de que las listas se transforman en matrices, retornando resultados de este último tipo. Sin embargo, operaciones que involucren listas con listas devolverán también listas.
Devuelve el valor true
si expr es una lista, y false
en caso contrario.
Construye y devuelve una lista, siendo cada uno de sus elementos generados por expr.
La llamada makelist (expr, i, i_0, i_1)
devuelve una lista cuyo j
-ésimo elemento es igual a ev (expr, i=j)
, tomando j
los valores enteros entre i_0 y i_1.
La llamada makelist (expr, x, list)
devuelve una lista cuyo j
-ésimo elemento es igual a
ev (expr, x=list[j])
, tomando j
los valores enteros entre 1 through length (list)
.
Ejemplos:
(%i1) makelist(concat(x,i),i,1,6); (%o1) [x1, x2, x3, x4, x5, x6] (%i2) makelist(x=y,y,[a,b,c]); (%o2) [x = a, x = b, x = c]
Devuelve true
si is(expr_1 = a)
para algún elemento a de args(expr_2)
,
en caso contrario devuelve false
.
Normalmente, expr_2
será una lista,
en cuyo caso args(expr_2) = expr_2
,
y la comprobación será si is(expr_1 = a)
para
algún elemento a de expr_2
.
La función member
no inspecciona las partes de los argumentos de expr_2
,
por lo que puede devolver false
si expr_1
es parte de alguno de los argumentos de expr_2
.
Véase también elementp
.
Ejemplos:
(%i1) member (8, [8, 8.0, 8b0]); (%o1) true (%i2) member (8, [8.0, 8b0]); (%o2) false (%i3) member (b, [a, b, c]); (%o3) true (%i4) member (b, [[a, b], [b, c]]); (%o4) false (%i5) member ([b, c], [[a, b], [b, c]]); (%o5) true (%i6) F (1, 1/2, 1/4, 1/8); 1 1 1 (%o6) F(1, -, -, -) 2 4 8 (%i7) member (1/8, %); (%o7) true (%i8) member ("ab", ["aa", "ab", sin(1), a + b]); (%o8) true
Devuelve el noveno elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve la lista L sin redundancias, es decir, sin elementos repetidos
Cuando ninguno de los elementos de L está repetido,
unique
devuelve una réplica de L, no la
propia L.
Si L no es una lista, unique
devuelve L.
Ejemplo:
(%i1) unique ([1, %pi, a + b, 2, 1, %e, %pi, a + b, [1]]); (%o1) [1, 2, %e, %pi, [1], b + a]
Devuelve expr sin sus primeros n elementos si n es positivo, o sus últimos - n
elementos si n es negativo. En caso de que n tome el valor 1 puede ser omitido. La expresión expr puede ser una lista, una matriz o cualquier otra expresión.
Invierte el orden de los elementos de la lista (no los propios elementos). La función reverse
también opera sobre expresiones generales, como en reverse(a=b);
gives b=a
.
Devuelve el segundo elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve el séptimo elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve el sexto elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve los índices de los elementos x
de la
lista L para la cual el predicado maybe(P(x))
devuelve true
, lo que excluye a unknown
y a false
.
P puede ser el nombre de una función o de una expresión lambda.
L debe ser una lista literal.
Ejemplos:
(%i1) sublist_indices ('[a, b, b, c, 1, 2, b, 3, b], lambda ([x], x='b)); (%o1) [2, 3, 7, 9] (%i2) sublist_indices ('[a, b, b, c, 1, 2, b, 3, b], symbolp); (%o2) [1, 2, 3, 4, 7, 9] (%i3) sublist_indices ([1 > 0, 1 < 0, 2 < 1, 2 > 1, 2 > 0], identity); (%o3) [1, 4, 5] (%i4) assume (x < -1); (%o4) [x < - 1] (%i5) map (maybe, [x > 0, x < 0, x < -2]); (%o5) [false, true, unknown] (%i6) sublist_indices ([x > 0, x < 0, x < -2], identity); (%o6) [2]
Devuelve el décimo elemento de la lista o expresión expr. Véase first
para más detalles.
Devuelve el tercer elemento de la lista o expresión expr. Véase first
para más detalles.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Robert Dodier on diciembre, 22 2007 using texi2html 1.76.