Hola de nuevo, ya pasó algo de tiempo desde que escribí un tutorial de programación en Python, estuve publicando otros posts sobre otros temas, pero bueno... empecemos a hablar de programación otra vez. En esta ocasión, aprenderemos a manipular Listas en el lenguaje de programación Python. Manos a la obra !!!
Listas
Las listas son conjuntos ordenados de elementos del mismo o diferente tipo, digo esto porque una lista puede tener como elementos a números, cadenas, listas o combinaciones de ellos. Las listas están representadas escribiendo los elementos entre corchetes y separados por comas. Además, ten en cuenta que una lista completa puede ser almacenada en una variable. Veamos unos ejemplos:
>>> lista1 = ['hola', -45, 3]Como mencioné anteriormente, una lista puede contener elementos de diferentes tipos, números, cadenas, variables e incluso otras listas. Se llama lista vacia a una lista que no tiene elementos.
>>> lista1
['hola', -45, 3]
>>> lista2 = ['python', 'tutorial', 30]
>>> lista2
['python', 'tutorial', 30]
>>> lista3 = [12, -8, lista1, lista2, 'prueba']
>>> lista3
[12, -8, ['hola', -45, 3], ['python', 'tutorial', 30], 'prueba']
>>> listavacia = []
>>> listavacia
[]
>>>
Concatenar listas
Las listas se pueden concatenar (unir) con el símbolo de la suma (+), mira el ejemplo:
>>> lista1Como puedes ver, el resultado de concatenar listas es una nueva lista que tiene como elementos a los elementos de las listas individuales.
['hola', -45, 3]
>>> lista2
['python', 'tutorial', 30]
>>> lista4 = lista1 + lista2
>>> lista4
['hola', -45, 3, 'python', 'tutorial', 30]
También podemos concatenar listas sin almacenarlas previamente en alguna variable
>>> lista5 = ['Conocimiento']
>>> lista5
['Conocimiento']
>>> lista6 = lista5 + ['Adictivo']
>>> lista6
['Conocimiento', 'Adictivo']
Manipulación de los elementos individuales de una lista
Puedes acceder a cualquier elemento individual de la lista con sólo indicar el nombre de la lista y entre corchetes el número que representa su posición dentro de la lista.
Veamos unos ejemplos de acceso a elementos individuales dentro de una lista
>>> lista = ['python', 'tutorial', 30]
>>> lista
['python', 'tutorial', 30]
>>> lista[0]
'python'
>>> lista[1]
'tutorial'
>>> lista[2]
30
>>> lista[3]
Traceback (most recent call last):
File "pyshell#30", line 1, in module
lista[3]
IndexError: list index out of range
Con lista[0], lista[1], lista[2] todo va correcto y nos devuelve el valor correspondiente a la posición indicada, pero cuando escribimos lista[3] nos sale un error. Eso es porque no se puede hacer referencia a elementos fuera de la lista: "list index out of range."
Manipulación de Sublistas
Apartir de una lista nosotros podemos extraer sublistas que contengan sólo unos elementos de la lista original. Para ello usaremos la siguiente notación:
donde la sublista extraída tendrá una cantidad de elementos igual a la diferencia nfinal - ninicio, y que empieza con el elemento de la posición ninicio. ¿Medio enredado con esto? Veamos unos ejemplos:
a. Ejemplo (1)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
>>> lista[1:4]
['Febrero', 'Marzo', 'Abril']
en este ejemplo, para saber cuántos elementos tendrá la sublista sólo miramos [1 : 4] y restamos 4 - 1 con lo cual tendremos 3 elementos. Ahora para saber cual será el primer elemento de la sublista miramos nuevamente [1 : 4] con lo cual el primer elemento será el que se encuentra en la posición "1", es decir "Febrero". Luego la sublista tendrá 3 elementos empezando con "Febrero", dando como resultado ['Febrero', 'Marzo', 'Abril'].
b. Ejemplo(2)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
>>> lista[2:5]
['Marzo', 'Abril', 'Mayo']
en este ejemplo, igualmente tendremos 3 elementos (5 - 2 = 3) y la sublista empieza con el elemento de la posición "2", es decir "Marzo".
c. Ejemplo(3)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
>>> lista[:3]
['Enero', 'Febrero', 'Marzo']
Se extrae una sublista hasta el valor de posición 3 (no incluido el elemento de la posición 3)
d. Ejemplo(4)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
>>> lista[3:]
['Abril', 'Mayo']
Se extrae una sublista desde el valor de posición 3 (incluido el elemento de la posición 3)
Eliminando elementos de una lista
Para esto usaremos la instrucción del que es una palabra reservada que nos permite eliminar uno o varios elementos a la vez de una lista, o también la lista completa.
a. Ejemplo(1)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']
>>> lista[0] # eliminaremos este elemento
'Enero'
>>> del lista[0]
>>> lista
['Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']
como puedes notar hemos eliminado el elemento de posición "0", es decir "Enero".
b. Ejemplo(2)
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio']
>>> lista[2:5] # eliminaremos esta sublista
['Marzo', 'Abril', 'Mayo']
>>> del lista[2:5]
>>> lista
['Enero', 'Febrero', 'Junio', 'Julio']
en este ejemplo vemos algo similar a la manipulación de sublistas, se eliminan 3 elementos (5 - 2 = 3) empezando en el de la posición "2" es decir "Marzo".
Longitud de una lista o cadena de una cadena de carácteres
No importa si trabajamos con listas o con cadena de carácteres, podemos saber la longitud de ellas, es decir el número de elementos que tienen. La función len() devuelve la longitud de una lista o de una cadena de carácteres.
>>> lista
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo']
>>> len(lista)
5
>>> cadena = 'Conocimiento Adictivo'
>>> len(cadena)
21
notar que los espacios en blanco también son contados.
La función range()
Imagínate que deseas crear una lista con los 400 primeros números naturales ¿las escribirías manualmente? pues no... Muchas veces nos será de mucha utilidad crear listas de números enteros en sucesión aritmética de una manera automatizada y es allí donde usamos la función range(). Veamos los distintos casos de uso de esta función.
a. Caso 1: La función range con un único argumento se escribe range(n) y crea una lista creciente de n términos enteros que empieza en 0 donde los términos aumentan de uno en uno. Es decir:
>>> range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> range(11)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b. Caso 2: La función range con dos argumentos se escribe range(m, n) y crea una lista creciente de (n - m) términos enteros que empieza en m donde los términos aumentan de uno en uno. Es decir:
>>> range(2, 8) # 8 - 2 = 6 elementos
[2, 3, 4, 5, 6, 7]
>>> range(5, 8) # 8 - 5 = 3 elementos
[5, 6, 7]
>>> range(5, 12) # 12 - 5 = 7 elementos
[5, 6, 7, 8, 9, 10, 11]
c. Caso 3: La función range con tres argumentos se escribe range(m, n, p) y crea una lista que empieza en m y termina antes de llegar a n, avanzando de p en p. El valor de p no puede ser nunca cero. Si p es positivo la lista será creciente, pero n tiene que ser mayor que m para que la lista no sea vacía. Si p es negativo la lista será decreciente, pero n tiene que ser menor que m para que la lista no sea vacía.
# sucesiones creciente
>>> range(8, 25, 4) # empieza en 8, avanza de 4 en 4
[8, 12, 16, 20, 24]
>>> range(4, 16, 3) # empieza en 4, avanza de 3 en 3
[4, 7, 10, 13]
# sucesión decreciente
>>> range(16, 5, -3) # empieza en 16, disminuye de 3 en 3
[16, 13, 10, 7]
# error porque la razón es "p = 0"
>>> range (9, 18, 0)
Traceback (most recent call last):
File "pyshell#68", line 1, in module
range (9, 18, 0)
ValueError: range() step argument must not be zero
Bueno... esto sería todo por el momento. Ahora ya sabemos de Listas y el tipo de cosas que podemos hacer con ellas. También hemos visto dos funciones importantes: range() y len(). En la próxima entrada colgaré varios ejercicios para que practiquen todo lo que hemos aprendido hasta el momento pues ya es hora de llevar todo a la práctica
Nos vemos...