| | | |

Minicurso de Python para Matemáticas

Ayuda a mantener el sitio libre, gratuito y sin publicidad. ¡Colabora!

2.8 list

Una list es una colección de objetos indexada y mutable. Por ejemplo,

1x = [-1, 2, -3, -5]
2print(x, type(x))
[-1, 2, -3, -5] <class 'list'>
1y = [1, 1, 'hola', 2.5]
2print(y)
[1, 1, 'hola', 2.5]
1vacia = []
2print(len(vacia))
3print(len(y))
0
4

Los elementos de una list están indexados de manera análoga a una tuple, el índice 0 corresponde al primer elemento, el índice 1 al segundo elemento y así sucesivamente. Asimismo, el índice 1 corresponde al último elemento, el 2 al penúltimo y así sigue. Por ejemplo,

1x[-1] = 3.14
2print('x[0] = ', x[0])
3print('x = ', x)
x[0] = -1
x = [-1, 2, -3, 3.14]
1x[:3] = [10, -20]
2print(x)
[10, -20, -3, 3.14]

Los operadores básicos de concatenación y repetición también están disponibles para una list. Por ejemplo,

1x = [1,2] + [3, 4, 5]
2print(x)
3y = [1,2]*2
4print(y)
[1, 2, 3, 4, 5]
[1, 2, 1, 2]
Observación 2.8.0.1.

list cuenta con varias funciones listas para la ejecución de diversas tareas prácticas como, por ejemplo, insertar/eliminar elementos, contar ocurrencias, ordenar elementos, etc. Consulte en la web Python Docs: More on Lists.

Observación 2.8.0.2.(Asignación versus copia)

Estudiamos el siguiente ejemplo

1x = [2, 3, 1]
2y = x
3y[1] = 0
4print('x =', x)
x = [2, 0, 1]

En Python, los datos tienen identificación única. Por lo tanto, en este ejemplo, x e y apuntan a la misma dirección de memoria. Modificar y es también modificar x y viceversa. Para desasociar y de x, y necesita recibir una copia de x, como sigue

1x = [2, 3, 1]
2print('id(x) =', id(x))
3y = x.copy()
4print('id(y) =', id(y))
5y[1] = 0
6print('x =', x)
7print('y =', y)
id(x) = 140476759980864
id(y) = 140476760231360
x = [2, 3, 1]
y = [2, 0, 1]
Observación 2.8.0.3.(Añadir o extender)

Una list tiene tamaño dinámico, permitiendo la adición de un nuevo elemento o su extensión. La adición de un elemento puede ser hecha con el método list.append, mientras que la extensión es hecha con list.extend. Por ejemplo, con el list.append tenemos

1l = [1, 2]
2l.append((3,4))
3print(l)
[1, 2, (3, 4)]

Mientras, que con el list.extend obtenemos

1l = [1, 2]
2l.extend((3,4))
3print(l)
[1, 2, 3, 4]
Ejercicio 2.8.0.1.

La solución de

x22=0 (2.9)

puede ser aproximada por la iteración del método babilónico

x0=1, (2.10)
xi+1=12(xi+2xi) (2.11)

para i=0,1,2,. Asigne una lista con las cuatro primeras iteradas, i.e. [x0,x1,x2,x3,x4]. Consejo: use list.append.


1x = [1] # x0
2x.append(0.5*(x[-1] + 2./x[-1])) # x1
3x.append(0.5*(x[-1] + 2./x[-1])) # x2
4x.append(0.5*(x[-1] + 2./x[-1])) # x3
5x.append(0.5*(x[-1] + 2./x[-1])) # x4
6print('x = ', x)
Ejercicio 2.8.0.2.

Asigne cada uno de los siguientes vectores como una list:

x=(1,3,2), (2.12)
y=(4,2,0). (2.13)

Entonces, compute

  1. a)

    x+y

  2. b)

    xy

Consejo: use una comprensión de lista y los métodos zip y sum.


1# a)
2x = [-1, 3, -2]
3y = [4, -2, 0]
4xpy = [xy[0]+xy[1] for xy in zip(x,y)]
5print('x + y = ', xpy)
6
7# b)
8dxy = sum([xy[0]*xy[1] for xy in zip(x,y)])
9print('x . y = ', dxy)
Ejercicio 2.8.0.3.

Una matriz puede ser asignada como un encadenamiento de lists. Por ejemplo, la matriz

M=[1223] (2.14)

puede ser asignada como la siguiente list

1M = [[1,-2],[2,3]]
2M
[[1, -2], [2, 3]]

Use list para asignar la matriz

A=[121807312] (2.15)

y el vector

x=(2,3,1), (2.16)

entonces compute Ax.


1A = [[1,-2,1],
2 [8,0,-7],
3 [3,-1,-2]]
4x = [2,-3,1]
5Ax = [sum([aix[0]*aix[1] for aix in zip(ai, x)]) for ai in A]
6print('Ax = ', Ax)

Envía tu comentario

Aprovecho para agradecer a todas/os que de forma asidua o esporádica contribuyen enviando correcciones, sugerencias y críticas.

Opcional. Ingresa tu nombre para que pueda contactarte.
Opcional. Ingresa tu correo electrónico para que pueda contactarte.
La información ingresada se envía por correo electrónico al desarrollador del sitio y se trata de forma privada. Consulta la política de uso de datos para más información.

Licencia Creative Commons
Este texto se publica bajo los términos de la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional. Los íconos y elementos gráficos pueden estar sujetos a condiciones adicionales.

Pedro H A Konzen
Sitio derivado de notaspedrok.com.br. Contiene traducciones al español realizadas con GitHub Copilot.
| | | |