Matrices y Listas Python
Matrices y Listas Python
Introducción a Python
Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo,
abandone el sitio y no siga navegando por él. Puede saber más sobre nuestra política de cookies (/cookies.php) (Este
aviso se muestra sólo una vez en cada visita al sitio web).
Python
5 - Matrices, listas y cadenas de texto
5.1. Matrices y listas
Cuando necesitamos manejar muchos datos, generalmente hay soluciones más efectivas que tener muchas variables. Por
ejemplo, si hay que guardar 100 números, suele ser más eficiente almacenar esos 100 datos "juntos", formando una
"matriz", en vez de usar 100 variables distintas.
La palabra "matriz" es una traducción del inglés "array". Algunos autores lo traducen alternativamente como tabla, vector o
incluso "arreglo".
Normalmente, en una matriz podremos acceder individualmente a cada uno de sus elementos usando corchetes: el primer
dato sería algo como "datos[0]", y el último de 10 elementos sería "datos[9]".
Vamos a ver un ejemplo que prepare un array con 6 elementos, nos pida 6 datos y luego los muestre en orden contrario al
que se han introducido:
datos = [0,0,0,0,0,0]
for i in range(1,7):
datos[i-1] = int( input( "Dime el dato numero {}: ".format(i) ))
print ("Los datos al reves son: ")
for i in range(6,0,-1):
print ( datos[i-1] )
En Python, los arrays pueden ir aumentando de tamaño (comparado con otros lenguajes de programación, en este sentido
se parecen más a lo que en muchos lenguajes de programación se conoce como "listas"). Así, podemos partir de un array
vacío e ir añadiendo elementos con ".append":
1 of 6 1/23/21, 9:50 PM
Python - 5 - Matrices, listas y cadenas de texto - Aprend... https://www.aprendeaprogramar.com/cursos/verApartad...
datos = []
for i in range(1,7):
nuevoDato = int( input( "Dime el dato numero {}: ".format(i) ))
datos.append(nuevoDato)
print ("Los datos al reves son: ")
for i in range(6,0,-1):
print ( datos[i-1] )
Nota: No podemos crear el array vacío con "datos = []" y luego dar valor a un elemento con "datos[0]=5", porque
obtendríamos un mensaje de error que nos avisa de que nos hemos salido del rango de los datos. Deberemos reservar
todas las posiciones (como en el primer ejemplo) o bien usar ".append" (como en el segundo).
También podemos saber la cantidad de datos con "len(datos)", eliminar un elemento con ".remove", insertar en una cierta
posición con ".insert", o añadir toda una nueva lista de datos con "+", como en este ejemplo:
datos = [5,6,7,8,9]
for i in range(0,5):
print ( datos[i] , end=" " )
print()
datos.remove(6)
for i in range(0, len(datos)):
print ( datos[i] , end=" " )
print()
datos[0]=-2
for i in range(0,len(datos)):
print ( datos[i] , end=" " )
print()
datos.insert(1,23)
for i in range(0,len(datos)):
print ( datos[i] , end=" " )
print()
5 6 7 8 9
5 7 8 9
-2 7 8 9
-2 23 7 8 9
-2 23 7 8 9 31 32 33
Si un array va a contener muchos más datos, puede resultar incómodo eso de dar los valores iniciales uno por uno, y quizá
no podamos emplear ".append" si los valores no los vamos a recibir exactamente en orden. En ese caso, se puede
inicializar el array usando una orden "for" dentro de los corchetes, así:
2 of 6 1/23/21, 9:50 PM
Python - 5 - Matrices, listas y cadenas de texto - Aprend... https://www.aprendeaprogramar.com/cursos/verApartad...
Una forma más avanzada de crear un (falso) array vacío, para luego irlo rellenando, es usar unas llaves vacías, como en
"datos = { }", aunque esto tiene un significado ligeramente distinto (estaríamos creando un "diccionario", como veremos más
adelante):
datos = { }
for i in range(1,7):
datos[i-1] = int( input( "Dime el dato numero {}: ".format(i) ))
print ("Los datos al reves son: ")
for i in range(6,0,-1):
print ( datos[i-1] )
También tenemos la posibilidad de hacer ciertas operaciones habituales de forma automática: ver si un elemento aparece o
no dentro de nuestros datos, contar la cantidad de veces que aparece, mostrar el mínimo, el máximo, ordenar los datos...
Nosotros no las haremos de forma automática, sino artesanal, como parte de los ejercicios, para tomar soltura con los
pasos que normalmente requieren esas operaciones, y que nuestro conocimiento sea extrapolable a otros lenguajes de
programación que no nos den tanto trabajo hecho como Python.
Ejercicios propuestos:
5.1.1. Crea un programa que pida al usuario 10 números enteros y luego muestre los que eran pares, todos ellos en
la misma línea separados por un espacio en blanco.
5.1.2. Crea un programa que pida al usuario 10 números enteros, los guarde en un array y luego le pregunte de
forma repetitiva qué número quiere buscar. Le responderá si dicho número estaba o no entre los datos que se habían
introducido inicialmente. Dejará de repetirse cuando se introduzca el número 0.
5.1.3. Crea una variante del programa 5.2 que no sólo diga si el número estaba o no, sino que informe de cuántas
veces se ha encontrado.
5.1.4. Crea un programa que pida al usuario las componentes de dos vectores de 3 elementos. Después debe
mostrar el módulo de cada uno de los vectores, así como su producto escalar.
5.1.5. Crea un programa que pida al usuario 5 números reales, los guarde en una lista y luego muestre el menor de
todos ellos (Pista: para calcular el mínimo de una serie de datos deberemos partir de un valor inicial e irlo
comparando con todos los de la lista; si el valor actual es menor que el mínimo, pasará a ser nuestro nuevo mínimo;
en cuanto a ese "valor inicial", una forma "peligrosa" de obtenerlo es partir de uno claramente incorrecto, como
"1000000" (que es mayor que todos los de la lista), y una forma más fiable es tomar como valor inicial el primer dato
de la lista y después compararlo con los restantes).
5.1.6. Crea un programa que pida al usuario 5 números reales y luego muestre el menor de todos ellos (pero sin
almacenar todos los valores).
Para crear una matriz de dos dimensiones (realmente, una "lista de listas"), la alternativa más sencilla es indicar todos los
valores iniciales, incluso aunque fueran cero todos ellos (pero pueden no serlo, o incluso ser de tipos de datos distintos):
3 of 6 1/23/21, 9:50 PM
Python - 5 - Matrices, listas y cadenas de texto - Aprend... https://www.aprendeaprogramar.com/cursos/verApartad...
datos = [
["uno", 2],
["a", "b", "c"]
]
print(datos)
Y si la matriz es de un tamaño grande, puede ser más cómodo crearla y rellenarla de forma repetitiva, así:
Ejercicios propuestos:
5.1.7. Crea un programa que pida al usuario un bloque de 3x3 números enteros y luego muestre la media de las tres
filas.
5.1.8. Si tus conocimientos de matemáticas lo permiten, crea un programa que pida al usuario los datos de una
matriz de 3x3 números reales y muestre el valor de su determinante.
5.1.9. Crea un programa que pida al usuario un bloque de 3x3 números enteros y luego diga si alguna fila es múltiplo
de otra.
Para manipulaciones numéricas más avanzadas que lo que hemos visto, no se recomienda usar el sistema básico de
Python, sino una biblioteca de cálculo numérico llamado "numpy", algo en lo que no vamos a entrar por ahora.
De igual modo, también podemos crear "arrays" más parecidos a los de C y otros lenguajes, formados sólo por datos
básicos (números enteros o números reales, por ejemplo). Para ello, deberíamos importar un módulo llamado "array", pero
tampoco profundizaremos más en esa peculiaridad por ahora.
Extraer una letra de una cadena es como acceder a cualquier posición de una matriz o un vector: se indica la posición entre
corchetes, como en "nombre[i]". Para obtener una subcadena, basta indica la posición inicial y la final, separadas por un
símbolo de dos puntos: "nombre[desde:hasta]". Hay que recordar que se empieza a contar desde cero y que se termina en
la longitud ("len") menos uno, y que, igual que ocurría con "range", el valor "hasta" no se llega a alcanzar:
Concatenar cadenas (juntar dos textos en uno) es muy fácil: basta usar el símbolo de la suma (+):
4 of 6 1/23/21, 9:50 PM
Python - 5 - Matrices, listas y cadenas de texto - Aprend... https://www.aprendeaprogramar.com/cursos/verApartad...
nombre = "Juan"
espacio = " "
apellido = "Juanez"
frase = nombre + espacio + apellido
nprint ( frase )
Pero se pueden hacer muchas más cosas con las cadenas de texto y sus subcadenas si usamos esa nomenclatura de
"corchetes" y "dos puntos".Por ejemplo, podemos emplear posiciones negativas para indicar que queremos contar desde el
final de la cadena, o dejar una posición en blanco para decir "desde el principio" (si es la primera) o "hasta el final" (si es la
segunda), o añadir un tercer dato para indicar de cuánto en cuánto hay que avanzar (y puede incluso ser un número
negativo, para retroceder):
Como curiosidad, las cadenas en Python se pueden indicar entre comillas simples o dobles, indistintamente. Así, si
queremos escribir algo entre comillas dobles, podemos usar la cadena con comillas simples, y viceversa. Incluso podemos
crear un texto que abarque varias líneas, si lo delimitamos entre tres comillas (simples o dobles):
texto1 = "Hola"
texto2 = 'Adios'
explicacion = 'Dijo "De acuerdo"'
posesivo = "John's house"
variasLineas = """Esto
ocupa
varias líneas"""
Ejercicios propuestos:
5.2.1. Crea un programa que pida su nombre y su (primer) apellido al usuario, A partir de estos datos, deberá crear
una cadena que contenga el apellido, una coma, un espacio y el nombre, y deberá mostrarla en pantalla. Por
ejemplo, si el nombre es "Nacho" y el apellido es "Cabanes", la cadena resultante será "Cabanes, Nacho"
5.2.2. Crea un programa que pida su nombre al usuario y lo escriba alternando letras mayúsculas y minúsculas (por
ejemplo, "Nacho" se mostraría como "NaChO"
5.2.3. Crea un programa que pida su nombre al usuario y diga cuántas vocales contiene
5.2.4. Crea un programa que pida su nombre al usuario y lo escriba centrado en pantalla (suponiendo que la pantalla
tenga una anchura de 80 columnas) y con su primera letra en mayúsculas y el resto en minúsculas
5.2.5. Crea un programa que pida al usuario 10 palabras y luego las muestre de la última a la primera
5.2.6. Crea un programa que pida al usuario 10 palabras, las guarde en un array y luego le pregunte de forma
repetitiva qué texto quiere buscar. Le responderá si dicho texto era alguno de lo que se habían introducido
inicialmente. Dejará de repetirse cuando se introduzca "fin".
5 of 6 1/23/21, 9:50 PM
Python - 5 - Matrices, listas y cadenas de texto - Aprend... https://www.aprendeaprogramar.com/cursos/verApartad...
En los foros
23-01-2021 23:00 consignas de recursividad [C] (../mod/forum/discuss.php?d=5875)
23-01-2021 16:39 Ejercicio universidad [C++] (../mod/forum/discuss.php?d=5789)
22-01-2021 20:57 Vuelos [Java] (../mod/forum/discuss.php?d=5873)
22-01-2021 20:54 ¿Cómo usar mismo browser y url ya abierto? [Python] (../mod/forum/discuss.php?d=5872)
22-01-2021 20:02 c#,asp.net,angular pasar var de frontend a backend [C#] (../mod/forum/discuss.php?d=5871)
(Anteriores...) (../novedadesForos.php)
AprendeAProgramar.com
Cursos gratuitos de programacion de ordenadores, en español
¿Por qué? (../porque.php)
Preguntas frecuentes (../preguntasFrecuentes.php)
Novedades
24-12-2018: Algunos apartados incluyen... ¡vídeo! (../novedades.php)
22-03-2015: Puedes votar cuando te guste una respuesta (../novedades.php) Anteriores... (../novedades.php)
Contactar (../contactar.php)
¿Quiénes somos? (../quienes.php)
6 of 6 1/23/21, 9:50 PM