1 of 40

[1]

Programador de sistemas com Python

Listas

2 of 40

[2]

Entender o funcionamento da estrutura de dados lista.

Objetivo Geral

3 of 40

[3]

  • Python 3
  • VSCode

Pré-requisitos

4 of 40

[4]

Percurso

Etapa 1

Criação e acesso aos dados

Etapa 2

Métodos da classe list

5 of 40

[5]

Etapa 1

Criação e acesso aos dados

6 of 40

[6]

Listas em Python podem armazenar de maneira sequencial qualquer tipo de objeto. Podemos criar listas utilizando o construtor list, a função range ou colocando valores separados por vírgula dentro de colchetes. Listas são objetos mutáveis, portanto podemos alterar seus valores após a criação.

Criando listas

7 of 40

[7]

Exemplo

frutas = ["laranja", "maca", "uva"]��frutas = []��letras = list("python")��numeros = list(range(10))��carro = ["Ferrari", "F8", 4200000, 2020, 2900, "São Paulo", True]

8 of 40

[8]

A lista é uma sequência, portanto podemos acessar seus dados utilizando índices. Contamos o índice de determinada sequência a partir do zero.

Acesso direto

9 of 40

[9]

Exemplo

frutas = ["maçã", "laranja", "uva", "pera"]�frutas[0] # maçã�frutas[2] # uva

10 of 40

[10]

Sequências suportam indexação negativa. A contagem começa em -1.

Índices negativos

11 of 40

[11]

Exemplo

frutas = ["maçã", "laranja", "uva", "pera"]�frutas[-1] # pera�frutas[-3] # laranja

12 of 40

[12]

Listas podem armazenar todos os tipos de objetos Python, portanto podemos ter listas que armazenam outras listas. Com isso podemos criar estruturas bidimensionais (tabelas), e acessar informando os índices de linha e coluna.

Listas aninhadas

13 of 40

[13]

Exemplo

matriz = [� [1, "a", 2],� ["b", 3, 4],� [6, 5, "c"]�]��matriz[0] # [1, "a", 2]�matriz[0][0] # 1�matriz[0][-1] # 2�matriz[-1][-1] # "c"

14 of 40

[14]

Além de acessar elementos diretamente, podemos extrair um conjunto de valores de uma sequência. Para isso basta passar o índice inicial e/ou final para acessar o conjunto. Podemos ainda informar quantas posições o cursor deve "pular" no acesso.

Fatiamento

15 of 40

[15]

Exemplo

lista = ["p", "y", "t", "h", "o", "n"]��lista[2:] # ["t", "h", "o", "n"]�lista[:2] # ["p", "y"]�lista[1:3] # ["y", "t"]�lista[0:3:2] # ["p", "t"]�lista[::] # ["p", "y", "t", "h", "o", "n"]�lista[::-1] # ["n", "o", "h", "t", "y", "p"]

16 of 40

[16]

A forma mais comum para percorrer os dados de uma lista é utilizando o comando for.

Iterar listas

17 of 40

[17]

Exemplo

carros = ["gol", "celta", "palio"]��for carro in carros:� print(carro)

18 of 40

[18]

Às vezes é necessário saber qual o índice do objeto dentro do laço for. Para isso podemos usar a função enumerate.

Função enumerate

19 of 40

[19]

Exemplo

carros = ["gol", "celta", "palio"]��for indice, carro in enumerate(carros):� print(f"{indice}: {carro}")

20 of 40

[20]

A compreensão de lista oferece uma sintaxe mais curta quando você deseja: criar uma nova lista com base nos valores de uma lista existente (filtro) ou gerar uma nova lista aplicando alguma modificação nos elementos de uma lista existente.

Compreensão de listas

21 of 40

[21]

Filtro versão 1

numeros = [1, 30, 21, 2, 9, 65, 34]�pares = []��for numero in numeros:� if numero % 2 == 0:� pares.append(numero)

22 of 40

[22]

Filtro versão 2

numeros = [1, 30, 21, 2, 9, 65, 34]�pares = [numero for numero in numeros if numero % 2 == 0]

23 of 40

[23]

Modificando valores versão 1

numeros = [1, 30, 21, 2, 9, 65, 34]�quadrado = []��for numero in numeros:� quadrado.append(numero ** 2)

24 of 40

[24]

Modificando valores versão 2

numeros = [1, 30, 21, 2, 9, 65, 34]�quadrado = [numero ** 2 for numero in numeros]

25 of 40

[25]

Percurso

Etapa 1

Criação e acesso aos dados

Etapa 2

Métodos da classe list

26 of 40

[26]

Etapa 2

Métodos da classe list

27 of 40

[27]

[].append

lista = []��lista.append(1)�lista.append("Python")�lista.append([40, 30, 20])��print(lista) # [1, "Python", [40, 30, 20]]

28 of 40

[28]

[].clear

lista = [1, "Python", [40, 30, 20]]��print(lista) # [1, "Python", [40, 30, 20]]��lista.clear()��print(lista) # []

29 of 40

[29]

[].copy

lista = [1, "Python", [40, 30, 20]]��lista.copy()��print(lista) # [1, "Python", [40, 30, 20]]

30 of 40

[30]

[].count

cores = ["vermelho", "azul", "verde", "azul"]��cores.count("vermelho") # 1�cores.count("azul") # 2�cores.count("verde") # 1

31 of 40

[31]

[].extend

linguagens = ["python", "js", "c"]��print(linguagens) # ["python", "js", "c"]��linguagens.extend(["java", "csharp"])��print(linguagens) # ["python", "js", "c", "java", "csharp"]

32 of 40

[32]

[].index

linguagens = ["python", "js", "c", "java", "csharp"]��linguagens.index("java") # 3�linguagens.index("python") # 0

33 of 40

[33]

[].pop

linguagens = ["python", "js", "c", "java", "csharp"]��linguagens.pop() # csharp�linguagens.pop() # java�linguagens.pop() # c�linguagens.pop(0) # python

34 of 40

[34]

[].remove

linguagens = ["python", "js", "c", "java", "csharp"]��linguagens.remove("c")��print(linguagens) # ["python", "js", "java", "csharp"]

35 of 40

[35]

[].reverse

linguagens = ["python", "js", "c", "java", "csharp"]��linguagens.reverse()��print(linguagens) # ["csharp", "java", "c", "js", "python"]

36 of 40

[36]

[].sort

linguagens = ["python", "js", "c", "java", "csharp"]�linguagens.sort() # ["c", "csharp", "java", "js", "python"]��linguagens = ["python", "js", "c", "java", "csharp"]�linguagens.sort(reverse=True) # ["python", "js", "java", "csharp", "c"]��linguagens = ["python", "js", "c", "java", "csharp"]�linguagens.sort(key=lambda x: len(x)) # ["c", "js", "java", "python", "csharp"]��linguagens = ["python", "js", "c", "java", "csharp"]�linguagens.sort(key=lambda x: len(x), reverse=True) # ["python", "csharp", "java", "js", "c"]

37 of 40

[37]

len

linguagens = ["python", "js", "c", "java", "csharp"]��len(linguagens) # 5

38 of 40

[38]

sorted

linguagens = ["python", "js", "c", "java", "csharp"]�

sorted(linguagens, key=lambda x: len(x)) # ["c", "js", "java", "python", "csharp"]

sorted(linguagens, key=lambda x: len(x), reverse=True) # ["python", "csharp", "java", "js", "c"]

39 of 40

[39]

Percurso

Etapa 1

Criação e acesso aos dados

Etapa 2

Métodos da classe list

40 of 40

[40]

Links Úteis