edubun
Português

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])
Saída
['rice', 'seaweed soup', 'bulgogi', 'kimchi', 'milk']
5
rice milk

As 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)
Saída
['ramen', 'milk', 'tofu']
['ramen'] tofu
False
Depois desta linhacart
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)
Saída
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[:].

b = a não copia a lista. Os dois nomes apontam para a mesma lista, então b.append(...) também aparece quando você imprime a.
a = ["rice", "soup"]
b = a
b.append("kimchi")
print(a)
c = a.copy()
c.append("egg")
print(a)
print(c)
Saída
['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.

listaValores 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
  1. O que isto mostra?
    nums = [10, 20, 30, 40]
    print(nums[2])
  2. O que isto mostra?
    nums = [10, 20, 30, 40]
    print(nums[-1] + nums[0])
  3. O que isto mostra?
    bag = ["pen"]
    bag.append("ruler")
    bag.append("eraser")
    print(len(bag))
  4. 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
  5. 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] None
    • Um erro
  6. O que isto mostra?
    a = [1, 2]
    b = a
    b.append(3)
    print(a)
    • [1, 2]
    • [1, 2, 3]
    • [3]
    • Um erro
  7. O que isto mostra?
    marks = [70, 90, 80]
    print(sum(marks) / len(marks))
  8. O que isto mostra?
    stations = ["Seoul", "Yongsan", "Noryangjin", "Daebang"]
    print(stations[1:3])
  9. O que isto mostra?
    stack = ["a", "b", "c"]
    top = stack.pop()
    print(top, len(stack))
  10. O que isto mostra?
    print("milk" in ["eggs", "milk", "tofu"])
  11. Coloque as linhas em ordem para o programa imprimir a lista abaixo.
    Saída
    ['homework', 'piano']
Erros comuns
  • "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.
Nota do professorO cardápio do almoço funciona porque todo aluno já lê um todos os dias. Peça que digitem o cardápio do dia como uma lista e respondam a três perguntas com código: quantos pratos, qual é o primeiro, qual é o último. A diferença entre sort() e sorted() e o erro menu = menu.append(x) são a mesma lição: alguns métodos mudam o objeto e devolvem None. Desenhe o diagrama dos dois nomes para a mesma lista no quadro e encene com dois post-its numa mesma caixa. O currículo coreano de informática do ensino fundamental pede programas que usem uma estrutura sequencial como a lista para tratar muitos valores, então um pequeno projeto que some uma lista de notas se encaixa aqui.
Pontos-chave
  • 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