0% encontró este documento útil (0 votos)
17 vistas13 páginas

Programacion1 Tema9 Listas Python

El tema 9 del curso de Introducción a la Programación se centra en las listas en Python, una estructura de datos fundamental que permite almacenar y manipular colecciones ordenadas de elementos. Se abordan aspectos como la creación, acceso, modificación y métodos básicos de listas, así como patrones de resolución de problemas comunes. Este tema es crucial para que los estudiantes aprendan a manejar múltiples datos de manera efectiva en sus programas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas13 páginas

Programacion1 Tema9 Listas Python

El tema 9 del curso de Introducción a la Programación se centra en las listas en Python, una estructura de datos fundamental que permite almacenar y manipular colecciones ordenadas de elementos. Se abordan aspectos como la creación, acceso, modificación y métodos básicos de listas, así como patrones de resolución de problemas comunes. Este tema es crucial para que los estudiantes aprendan a manejar múltiples datos de manera efectiva en sus programas.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tema 9 - Listas en Python

Almacenar, recorrer y modificar colecciones ordenadas de datos con seguridad


y claridad

Asignatura 05GMAT - Grado en Matemáticas

Propósito del tema


Este tema introduce la estructura de datos más importante del primer curso de programación:
la lista. Con ella el estudiante deja de trabajar únicamente con valores aislados y empieza
a manipular colecciones ordenadas de elementos. Se estudian creación, acceso por índice,
recorrido, modificación, métodos básicos, listas anidadas y patrones de resolución de problemas
con listas.

Asignatura: Introducción a la Programación


Bloque: Tema 9 - Listas en Python
Lenguaje de referencia: Python
Enfoque: Listas, índices, recorridos, métodos, listas de listas y primeras compren-
siones
Formato: Manual de estudio y refuerzo

Documento preparado a partir de la guía oficial de la asignatura y de la bibliografía base sobre Python y
construcción de software.
Introducción a la Programación - Tema 9 Listas en Python

Índice

1. Presentación del tema 2

2. Qué es una lista 2


2.1. Definición informal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Ventajas principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3. Creación de listas 2
3.1. Listas literales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2. Listas a partir de repetición o rango . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4. Índices y acceso a elementos 3


4.1. Índices negativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2. Errores por índices fuera de rango . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

5. Longitud y pertenencia 4
5.1. Longitud con len() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.2. Operador de pertenencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

6. Rebanado o slicing 4

7. Mutabilidad: modificar listas 4

8. Métodos básicos de listas 5


8.1. Añadir elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
8.2. Insertar en una posición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
8.3. Eliminar elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
8.4. Ordenar y revertir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
8.5. Contar y localizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

9. Recorridos de listas 6
9.1. Recorrido directo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
9.2. Recorrido por índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
9.3. Patrones habituales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

[Link] clásicos con listas 6


10.1. Suma y media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
10.2. Búsqueda de máximo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
10.3. Filtrado sencillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[Link], referencias y alias 7


11.1. Cómo copiar correctamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

[Link] anidadas 7

[Link] sencillas 8

[Link] resuelto completo 8


14.1. Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
14.2. Solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1 / 11
Introducción a la Programación - Tema 9 Listas en Python

14.3. Comentario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

[Link] laboratorio guiado 9

[Link] frecuentes 10

[Link] propuestos 10

[Link] breves 10

[Link] final 11

[Link]ía 11

2 / 11
Introducción a la Programación - Tema 9 Listas en Python

1. Presentación del tema

Hasta ahora, el estudiante ha trabajado sobre todo con variables que almacenan un único valor: un
número, una cadena o un dato booleano. Sin embargo, muchos problemas reales requieren manejar
varios datos del mismo tipo o secuencias sobre las que hay que iterar, buscar, actualizar o
resumir.
Las listas de Python permiten modelizar ese tipo de situaciones de forma natural. Son una estructura
flexible, ordenada y mutable. Gracias a ellas podemos representar calificaciones, temperaturas,
nombres, secuencias numéricas, resultados de experimentos y, más adelante, vectores y matrices.

Idea central
Una lista es una secuencia ordenada y mutable de elementos. Puede contener cero, uno o
muchos valores, incluso de tipos distintos, aunque en programación inicial conviene usar listas
homogéneas siempre que sea posible.

2. Qué es una lista

2.1. Definición informal

Una lista es una colección ordenada de elementos colocados entre corchetes y separados por comas.
notas = [7.5, 8.0, 6.25, 9.1]
nombres = ["Ana", "Luis", "Marta"]
vacia = []

Definición
Una lista en Python es un objeto secuencial que:
mantiene el orden de los elementos,
permite acceder a cada posición mediante un índice,
puede modificarse una vez creada,
admite recorridos, búsquedas, inserciones y borrados.

2.2. Ventajas principales

Agrupan datos relacionados en una sola variable.


Facilitan el uso de bucles.
Permiten representar secuencias de longitud variable.
Son la base de estructuras más complejas, como listas de listas.

3. Creación de listas

3.1. Listas literales

La forma más directa de crear una lista es escribir sus elementos entre corchetes.

3 / 11
Introducción a la Programación - Tema 9 Listas en Python

primos = [2, 3, 5, 7, 11]


ciudades = ["Valencia", "Gandia", "Alicante"]
mezcla = [3, "hola", True]

3.2. Listas a partir de repetición o rango

ceros = [0] * 5
numeros = list(range(1, 6))
# numeros vale [1, 2, 3, 4, 5]

Advertencia
Aunque Python permite listas con elementos de tipos diferentes, en una asignatura inicial es
recomendable evitar mezclas innecesarias. Trabajar con listas homogéneas hace el código más
claro y reduce errores.

4. Índices y acceso a elementos

Cada posición de una lista tiene un índice. El primero es 0.


0 1 2 3 4

10 20 30 40 50

Lista datos = [10, 20, 30, 40, 50]

datos = [10, 20, 30, 40, 50]


print(datos[0]) # 10
print(datos[3]) # 40
print(datos[-1]) # 50

4.1. Índices negativos

Los índices negativos cuentan desde el final:


-1: último elemento.
-2: penúltimo elemento.

4.2. Errores por índices fuera de rango

valores = [4, 8, 15]


print(valores[5])

Eso provoca un error porque la posición 5 no existe.

4 / 11
Introducción a la Programación - Tema 9 Listas en Python

Error frecuente
Confundir longitud con último índice. Si una lista tiene longitud 5, sus índices válidos son 0,
1, 2, 3 y 4.

5. Longitud y pertenencia

5.1. Longitud con len()

colores = ["rojo", "verde", "azul"]


print(len(colores)) # 3

5.2. Operador de pertenencia

frutas = ["manzana", "pera", "uva"]


print("pera" in frutas) # True
print("naranja" not in frutas) # True

6. Rebanado o slicing

El rebanado permite extraer sublistas.


numeros = [0, 1, 2, 3, 4, 5, 6]
print(numeros[1:4]) # [1, 2, 3]
print(numeros[:3]) # [0, 1, 2]
print(numeros[3:]) # [3, 4, 5, 6]
print(numeros[::2]) # [0, 2, 4, 6]

Observación
En una expresión lista[a:b], se incluye el índice a pero se excluye el índice b.

7. Mutabilidad: modificar listas

Una gran diferencia respecto a las cadenas es que las listas son mutables. Podemos cambiar un
elemento concreto.
precios = [10.0, 12.5, 9.8]
precios[1] = 13.0
print(precios) # [10.0, 13.0, 9.8]

También podemos sustituir un tramo de la lista.


valores = [1, 2, 3, 4, 5]
valores[1:3] = [20, 30]
print(valores) # [1, 20, 30, 4, 5]

5 / 11
Introducción a la Programación - Tema 9 Listas en Python

8. Métodos básicos de listas

8.1. Añadir elementos

nums = [1, 2, 3]
[Link](4)
# [1, 2, 3, 4]

8.2. Insertar en una posición

[Link](1, 99)
# [1, 99, 2, 3, 4]

8.3. Eliminar elementos

[Link](99) # elimina por valor


ultimo = [Link]() # elimina y devuelve el último

8.4. Ordenar y revertir

datos = [7, 2, 9, 1]
[Link]() # modifica la lista
[Link]() # invierte el orden

8.5. Contar y localizar

letras = ["a", "b", "a", "c"]


print([Link]("a")) # 2
print([Link]("c")) # 3

Método Efecto principal Devuelve


append(x) Añade x al final None
insert(i, x) Inserta x en la posición i None
remove(x) Elimina la primera aparición de x None
pop() Elimina el último elemento elemento eliminado
sort() Ordena la lista en sitio None
reverse() Invierte el orden en sitio None
count(x) Cuenta apariciones de x entero
index(x) Busca la primera posición de x entero

Muy importante
Muchos métodos de lista modifican la lista y devuelven None. Por eso no debe escribirse:
ordenada = [Link]() # incorrecto como idea de copia

Si se quiere una copia ordenada, conviene usar sorted(datos).

6 / 11
Introducción a la Programación - Tema 9 Listas en Python

9. Recorridos de listas

9.1. Recorrido directo

notas = [6.5, 8.0, 7.25]


for nota in notas:
print(nota)

Este es el recorrido más natural cuando solo interesa el valor.

9.2. Recorrido por índices

notas = [6.5, 8.0, 7.25]


for i in range(len(notas)):
print(i, notas[i])

Se usa cuando también interesa la posición.

9.3. Patrones habituales

Sumar todos los elementos.


Contar cuántos cumplen una condición.
Buscar el mayor o el menor.
Construir una nueva lista a partir de otra.

10. Patrones clásicos con listas

10.1. Suma y media

notas = [6.5, 8.0, 7.25, 9.0]


suma = 0
for nota in notas:
suma += nota
media = suma / len(notas)
print(media)

10.2. Búsqueda de máximo

valores = [12, 7, 19, 4, 16]


maximo = valores[0]
for x in valores:
if x > maximo:
maximo = x
print(maximo)

7 / 11
Introducción a la Programación - Tema 9 Listas en Python

10.3. Filtrado sencillo

nums = [1, 2, 3, 4, 5, 6]
pares = []
for x in nums:
if x % 2 == 0:
[Link](x)
print(pares)

11. Copias, referencias y alias

Este es uno de los puntos más delicados del tema.


a = [1, 2, 3]
b = a
b[0] = 99
print(a) # [99, 2, 3]

Aquí a y b apuntan a la misma lista.

11.1. Cómo copiar correctamente

a = [1, 2, 3]
b = a[:] # o list(a)
b[0] = 99
print(a) # [1, 2, 3]
print(b) # [99, 2, 3]

Error frecuente
Usar una asignación simple esperando una copia independiente. En listas, b = a no crea una
nueva lista: crea otra referencia al mismo objeto.

12. Listas anidadas

Una lista puede contener otras listas.


matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matriz[1][2]) # 6

Esto prepara el terreno para vectores y matrices del tema siguiente.

8 / 11
Introducción a la Programación - Tema 9 Listas en Python

lista de listas

1 2 3
matriz[1][2] = 6
4 5 6
fila 1, columna 2
7 8 9

13. Comprensiones sencillas

Una comprensión de listas permite construir listas de forma compacta.


cuadrados = [x**2 for x in range(1, 6)]
print(cuadrados) # [1, 4, 9, 16, 25]

Con condición:
pares = [x for x in range(10) if x % 2 == 0]

Criterio de uso
Las comprensiones son útiles cuando la transformación es simple y legible. Si la lógica se complica,
un bucle tradicional suele ser mejor opción didáctica.

14. Ejemplo resuelto completo

14.1. Problema

Dada una lista de temperaturas semanales, calcular:


la temperatura media,
la máxima,
cuántos días superan la media.

14.2. Solución

temperaturas = [18, 21, 19, 24, 22, 20, 23]

suma = 0
for t in temperaturas:
suma += t
media = suma / len(temperaturas)

maxima = temperaturas[0]
for t in temperaturas:
if t > maxima:
maxima = t

contador = 0

9 / 11
Introducción a la Programación - Tema 9 Listas en Python

for t in temperaturas:
if t > media:
contador += 1

print(f"Media: {media:.2f}")
print(f"Máxima: {maxima}")
print(f"Días por encima de la media: {contador}")

14.3. Comentario

El problema combina tres patrones básicos sobre listas: acumulación, búsqueda de extremo y conteo
condicionado. Resolver bien este tipo de ejercicios es esencial antes de avanzar hacia estructuras
bidimensionales.

15. Mini laboratorio guiado

Laboratorio
Escribe un programa que:
1. pida al usuario cinco números y los guarde en una lista,
2. muestre la lista completa,
3. calcule la suma y la media,
4. construya otra lista con los números mayores que la media,
5. muestre ambas listas.

Una posible solución es:


nums = []
for i in range(5):
valor = float(input(f"Introduce el número {i+1}: "))
[Link](valor)

suma = 0
for x in nums:
suma += x
media = suma / len(nums)

mayores = []
for x in nums:
if x > media:
[Link](x)

print("Lista original:", nums)


print(f"Media: {media:.2f}")
print("Mayores que la media:", mayores)

10 / 11
Introducción a la Programación - Tema 9 Listas en Python

16. Errores frecuentes

Intentar acceder al último elemento con lista[len(lista)] en vez de lista[len(lista)-1]


o lista[-1].
Modificar una lista creyendo que se trabaja con una copia independiente.
Usar sort() esperando un valor de retorno.
Mezclar tipos sin necesidad dentro de la misma lista.
Confundir recorrido por valores con recorrido por índices.
Olvidar que el extremo derecho del slicing no se incluye.

17. Ejercicios propuestos

1. Crear una lista con los diez primeros números naturales y mostrar solo los elementos en posiciones
pares.
2. Pedir al usuario una secuencia de seis notas y calcular la media.
3. Dada una lista de enteros, construir otra con sus cuadrados.
4. Contar cuántos elementos de una lista son positivos, negativos y nulos.
5. Encontrar el mínimo y el máximo de una lista sin usar min() ni max().
6. Eliminar todas las apariciones de un valor concreto de una lista.
7. Invertir una lista sin usar reverse().
8. Dada una lista de palabras, construir una lista con sus longitudes.
9. Comprobar si una lista de enteros está ordenada de menor a mayor.
10. Crear una matriz 3 × 3 con listas anidadas y calcular la suma de sus elementos.

18. Respuestas breves

1. Usar range(0, len(lista), 2) o slicing lista[::2].


2. Recoger datos con append(), sumar con acumulador y dividir por len().
3. Bucle con append(x**2) o comprensión.
4. Inicializar tres contadores y actualizar según el signo.
5. Inicializar con el primer elemento y comparar en un recorrido.
6. Puede resolverse con una nueva lista filtrada.
7. Puede construirse una nueva lista recorriendo desde el final.
8. Aplicar len() a cada palabra.
9. Comparar cada elemento con el siguiente.
10. Recorrer filas y columnas acumulando la suma total.

11 / 11
Introducción a la Programación - Tema 9 Listas en Python

19. Resumen final

Síntesis
Las listas son secuencias ordenadas y mutables.
El acceso se realiza mediante índices, empezando en 0.
len(), in, slicing y los métodos básicos permiten operar con comodidad.
Los recorridos con for y los patrones de suma, conteo, búsqueda y filtrado son fundamentales.
La diferencia entre copia y referencia debe dominarse cuanto antes.
Las listas anidadas preparan el estudio de vectores y matrices.

20. Bibliografía

Barry, P. & Griffiths, D. Head First Programming. O’Reilly.


Lutz, M. Learning Python. 5th ed. O’Reilly.
Matthes, E. Python Crash Course. 2nd ed. No Starch Press.
McConnell, S. Code Complete. 2nd ed. Microsoft Press.
Guía oficial de la asignatura 05GMAT - Introducción a la Programación.

12 / 11

También podría gustarte