Listas
Uma lista de 5 itens tem índices de 0 a 4, então menu[4] é o último item e menu[5] interrompe o programa com IndexError.
Uma variável pode guardar um cardápio inteiro
O cardápio do almoço da escola tem vários pratos, e uma lista de compras tem vários itens. Você poderia criar uma variável por prato, dish1, dish2, dish3, mas isso desmorona quando o cardápio cresce. Uma lista guarda qualquer quantidade de valores numa só variável, em ordem. Escreva os valores entre colchetes, separados por vírgulas.
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 milkAs listas usam os mesmos números de índice das strings: 0 para o primeiro item, -1 para o último e fatiamentos como menu[1:3]. len() dá o número de itens. Quando você imprime uma lista inteira, o Python mostra os colchetes e põe cada string entre aspas simples, para você ver exatamente onde cada item começa e termina.
Ao contrário das strings, as listas podem mudar
Uma string não pode ser editada no lugar, mas uma lista pode. Atribua a um índice para trocar um item. append() acrescenta um item no fim, remove() apaga o primeiro valor igual e pop() tira o último item e o devolve a você. A palavra-chave in verifica se um valor está na lista. Esses métodos mudam a própria lista, e essa é a grande diferença em relação aos métodos de string.
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| Depois desta linha | 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 é 'tofu') |
Listas de números vêm com ferramentas prontas
Para uma lista de números, sum(), min() e max() fazem o que o nome diz. sorted() devolve uma nova lista em ordem e deixa a original em paz, enquanto o método sort() reordena a própria lista e não devolve nada. A média é a soma dividida pela quantidade, um bom uso do 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]Dois nomes podem apontar para a mesma lista
Aqui está a parte que pega quase todo mundo. Depois de b = a, não há duas listas. Há uma lista com dois nomes. Mude-a por b, e a também vê a mudança, porque a e b são a mesma lista. Com números e strings você nunca percebe isso, já que eles não podem ser alterados no lugar. Com listas, percebe. Se quiser uma cópia separada, peça uma com a.copy() ou com o fatiamento 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']Listas e laços andam juntos. Uma lista de 30 notas de prova só serve se um programa puder visitar cada uma sem escrever 30 linhas separadas, e é isso que o laço for da unidade sobre laços faz. Até lá, sum(), min(), max() e len() fazem a visita por você, uma chamada cada.
| lista | Valores em ordem entre [ ], separados por vírgulas |
| append(x) | Acrescenta x ao fim da lista |
| remove(x) | Apaga o primeiro item igual a x |
| pop() | Tira o último item e o devolve |
| sorted(list) | Nova lista ordenada; a original não muda |
| list.sort() | Ordena a própria lista e devolve None |
| a.copy() | Uma cópia separada da lista a |
- O que isto mostra?
nums = [10, 20, 30, 40] print(nums[2]) - O que isto mostra?
nums = [10, 20, 30, 40] print(nums[-1] + nums[0]) - O que isto mostra?
bag = ["pen"] bag.append("ruler") bag.append("eraser") print(len(bag)) - O que isto mostra?
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
- O que isto mostra?
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] NoneUm erro
- O que isto mostra?
a = [1, 2] b = a b.append(3) print(a)[1, 2][1, 2, 3][3]Um erro
- O que isto mostra?
marks = [70, 90, 80] print(sum(marks) / len(marks)) - O que isto mostra?
stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"] print(stations[1:3]) - O que isto mostra?
stack = ["a", "b", "c"] top = stack.pop() print(top, len(stack)) - O que isto mostra?
print("milk" in ["eggs", "milk", "tofu"]) - Coloque as linhas em ordem para o programa imprimir a lista abaixo.Saída
['homework', 'piano']
- "O último item é menu[len(menu)]." Com 5 itens, os índices vão só até 4, então menu[5] para com IndexError: list index out of range. Use menu[-1] ou menu[len(menu) - 1].
- "menu = menu.append(x) guarda a nova lista." append() muda a lista e devolve None, então essa linha troca a lista inteira por None. Escreva menu.append(x) sozinho.
- "b = a me dá uma cópia de segurança da lista." Ela só dá à mesma lista um segundo nome. Mudanças feitas por qualquer um dos nomes aparecem nos dois. Use b = a.copy() para uma cópia de verdade.
- Uma lista guarda valores em ordem: [a, b, c].
- Índices e fatiamentos funcionam como nas strings; o último índice é len - 1.
- append, remove, pop e a atribuição por índice mudam a própria lista.
- sorted() devolve uma nova lista; sort() muda a lista e devolve None.
- b = a compartilha uma só lista; use a.copy() para ter outra separada.
Fontes deste 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)
Data de verificação: 2026-10-19