Listas
Una lista de 5 elementos tiene índices del 0 al 4, así que menu[4] es el último elemento y menu[5] detiene el programa con IndexError.
Una variable puede contener todo un menú
El menú del almuerzo escolar tiene varios platos, y una lista de compras tiene varios artículos. Podrías crear una variable por plato, dish1, dish2, dish3, pero ese enfoque se vuelve poco práctico en cuanto el menú crece. Una lista guarda cualquier cantidad de valores en una variable, en orden. Escribe los valores entre corchetes, separados por comas.
menu = ["rice", "seaweed soup", "bulgogi", "kimchi", "milk"]
print(menu)
print(len(menu))
print(menu[0], menu[-1])['rice', 'seaweed soup', 'bulgogi', 'kimchi', 'milk']
5
rice milkLas listas usan los mismos números de índice que las cadenas: 0 para el primer elemento, -1 para el último, y segmentos como menu[1:3]. len() da el número de elementos. Cuando imprimes una lista completa, Python muestra los corchetes y pone cada cadena entre comillas simples, así que ves exactamente dónde empieza y termina cada elemento.
A diferencia de las cadenas, las listas pueden cambiar
Una cadena no se puede editar en el sitio, pero una lista sí. Asigna a un índice para reemplazar un elemento. append() agrega un elemento al final, remove() borra el primer valor que coincide y pop() saca el último elemento y te lo devuelve. La palabra clave in comprueba si un valor está en la lista. Estos métodos cambian la lista misma, que es la gran diferencia con los métodos de cadena.
cart = ["eggs", "milk"]
cart.append("tofu")
cart[0] = "ramen"
print(cart)
cart.remove("milk")
last = cart.pop()
print(cart, last)
print("tofu" in cart)['ramen', 'milk', 'tofu']
['ramen'] tofu
False| Después de esta línea | cart |
|---|---|
| cart = ["eggs", "milk"] | ['eggs', 'milk'] |
| cart.append("tofu") | ['eggs', 'milk', 'tofu'] |
| cart[0] = "ramen" | ['ramen', 'milk', 'tofu'] |
| cart.remove("milk") | ['ramen', 'tofu'] |
| last = cart.pop() | ['ramen'] (last es 'tofu') |
Las listas de números vienen con herramientas ya hechas
Para una lista de números, sum(), min() y max() hacen lo que dicen sus nombres. sorted() devuelve una lista nueva ordenada y deja la original intacta, mientras que el método sort() reordena la propia lista y devuelve None. El promedio es la suma dividida entre la cantidad, un buen uso de len().
scores = [72, 95, 88, 64, 81]
print(sum(scores), min(scores), max(scores))
print(sum(scores) / len(scores))
print(sorted(scores))
print(scores)400 64 95
80.0
[64, 72, 81, 88, 95]
[72, 95, 88, 64, 81]Dos nombres pueden apuntar a la misma lista
Aquí está la parte que atrapa a casi todos. Después de b = a, no hay dos listas. Hay una lista con dos nombres. Si la cambias a través de b, a también ve el cambio, porque a y b son la misma lista. Con números y cadenas nunca lo notas, porque no se pueden cambiar en el sitio. Con las listas sí. Si quieres una copia separada, pídela con a.copy() o con el segmento a[:].
a = ["rice", "soup"]
b = a
b.append("kimchi")
print(a)
c = a.copy()
c.append("egg")
print(a)
print(c)['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi']
['rice', 'soup', 'kimchi', 'egg']Las listas y los bucles van juntos. Una lista de 30 notas de examen solo es útil si un programa puede visitar cada una sin escribir 30 líneas separadas, y eso es lo que hace el bucle for de la unidad sobre bucles. Hasta entonces, sum(), min(), max() y len() hacen la visita por ti, una llamada cada uno.
| lista | Valores en orden entre [ ], separados por comas |
| append(x) | Agrega x al final de la lista |
| remove(x) | Borra el primer elemento igual a x |
| pop() | Saca el último elemento y lo devuelve |
| sorted(list) | Lista nueva ordenada; la original no cambia |
| list.sort() | Ordena la propia lista y devuelve None |
| a.copy() | Una copia separada de la lista a |
- ¿Qué imprime esto?
nums = [10, 20, 30, 40] print(nums[2]) - ¿Qué imprime esto?
nums = [10, 20, 30, 40] print(nums[-1] + nums[0]) - ¿Qué imprime esto?
bag = ["pen"] bag.append("ruler") bag.append("eraser") print(len(bag)) - ¿Qué imprime esto?
x = [3, 1, 2] y = sorted(x) print(x, y)[3, 1, 2] [1, 2, 3][1, 2, 3] [1, 2, 3][1, 2, 3] [3, 1, 2][3, 1, 2] None
- ¿Qué imprime esto?
x = [3, 1, 2] y = x.sort() print(x, y)[3, 1, 2] [1, 2, 3][1, 2, 3] [1, 2, 3][1, 2, 3] NoneUn error
- ¿Qué imprime esto?
a = [1, 2] b = a b.append(3) print(a)[1, 2][1, 2, 3][3]Un error
- ¿Qué imprime esto?
marks = [70, 90, 80] print(sum(marks) / len(marks)) - ¿Qué imprime esto?
stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"] print(stations[1:3]) - ¿Qué imprime esto?
stack = ["a", "b", "c"] top = stack.pop() print(top, len(stack)) - ¿Qué imprime esto?
print("milk" in ["eggs", "milk", "tofu"]) - Pon las líneas en orden para que el programa imprima la lista de abajo.Salida
['homework', 'piano']
- «El último elemento es menu[len(menu)]». Con 5 elementos los índices llegan hasta 4, así que menu[5] se detiene con IndexError: list index out of range. Usa menu[-1] o menu[len(menu) - 1].
- «menu = menu.append(x) conserva la lista nueva». append() cambia la lista y devuelve None, así que esta línea reemplaza toda la lista por None. Escribe menu.append(x) sola.
- «b = a me da una copia de seguridad de la lista». Le da a la misma lista un segundo nombre. Los cambios hechos con cualquiera de los dos nombres se ven en ambos. Usa b = a.copy() para una copia de verdad.
- Una lista guarda valores en orden: [a, b, c].
- Los índices y los segmentos funcionan como en las cadenas; el último índice es len - 1.
- append, remove, pop y la asignación a un índice cambian la propia lista.
- sorted() devuelve una lista nueva; sort() cambia la lista y devuelve None.
- b = a comparte una sola lista; usa a.copy() para tener una separada.
Fuentes de este curso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Fecha de consulta: 2026-10-19