Esse post faz parte dos meus cadernos pessoais de estudos. Todas as anotações são baseadas nas aulas da Mentorama - Cientista de Dados do zero e organizadas sob o meu ponto de vista. M2A3.
Estrutura de Dados em Python
Definição: Coleções de dados com características específicas
Listas
Mutáveis, vários tipos.
Existe um espaço na memória para cada valor da lista.
Criar lista:
Usamos [ ]
e separamos os valores por ,
lista_nomes = ['Annie', 'Elias', 'Sarah', 'San']
type(lista_nomes)
list
Essa lista era de nomes, então tinham só variáveis no formato string
. Agora vamos criar uma com vários tipos de variáveis.
lista_varios_tipos = [1,2, True, [3,4,5]]
veja que em [3,4,5]
foi colocada uma lista dentro da lista.
se você pedir o tipo
type(lista_varios_tipos)
vai retornar list
também.
Dá pra retornar uma lista vazia também, só deixando os colchetes vazios [ ]
Para visualizar os elementos da lista: print
print(lista_nomes)
Para contar o número de elementos numa lista: len
print(len(listanomes))
Para acessar os elementos da lista:
A indexação no python começa em zero. Então o 1° elemento estará sempre na posição 0. O 2° elemento será o 1.
No exemplo da lista_varios_tipos = [1,2, True, [3,4,5]]
a indexação será:
0 = 1
1 = 2
2 = True
3 = [3,4,5]
(aqui ele retorna a lista inteira que está inserida]
Se você quiser saber algum elemento da lista que é outro elemento, tem que botar as indexações em ordem assim:
lista_varios_tipos[3][1]
ou seja: o index [3]
é a lista [3,4,5]
, e o [1]
é o segundo elemento de dentro dessa lista 4
- para "fatiar" uma lista, ou seja, acessar apenas uma parte dela. função chamada slicing
na lista_nomes = [Annie, Elias, Sarah, San]
se eu pedir um slicing, ele será sempre ABERTO a direita e FECHADO a esquerda, o último elemento do index não vai aparecer.
lista_nomes = [0:2]
vai retornar
Annie, Elias
que pode ser simplificado por lista_nomes = [:2]
seria tipo um "até dois".
também é possível consultar "de trás para frente" usando uma posição negativa
lista_nomes = [-1]
vai retornar San
que é o último elemento da lista
lista_nomes = [-2]
retorna Sarah
que é o penúltimo
Strings VS. Listas
Dentro de uma lista, um elemento string
também é visto como uma sequência de caracteres.
Assim como fizemos em lista_varios_tipos[3][1]
que retornou o segundo elemento de lista [3], conseguimos fazer com uma variável string.
Em lista_nomes[0]
retorna "Annie"
Se eu colocar lista_nomes[0][3]
ele vai me retornar o 4º elemento da string "Annie"
ou seja
lista_nomes[0][3]
"i"
Alterar valores em lista
Vamos supor que a 'Annie' agora quer usar seu segundo nome, 'Carol'
lista_nomes[0] = Carol
quando eu rodar lista_nomes
ele vai retornar
'Carol', 'Elias', 'Sarah', 'San'
- mas a String é imutável
eu jamais conseguiria trocar "Carol" por "Karol" alterando seu primeiro elemento
lista_nomes[0][0] = K
NÃO FUNCIONA
Concatenar listas
Para juntar duas listas é a mesma coisa pra concatenar strings: usar o operador de soma.
Exemplo:
lista_todos = lista1 + lista 2
FUNÇÕES PARA A LISTA
Exemplo:
lista_de_notas = [6, 7, 8, 5, 4, 9, 10, 2, 4]
- menor elemento da lista
min(lista_de_notas) 2
maior
max(lista_de_notas)
10soma
sum(lista_de_notas)
55
como eu ainda não instalei nenhum módulo statistics vou calcular a média manualmente calculando o número de elementos também
len(lista_de_notas)
9
print(55/9)
6.1
agora vou tentar tirar a mediana, usando o sort e depois tirar a média usando o acesso ao elemento
lista_de_notas.sort()
essa função coloca a lista em ordem crescente (achei no stackoverflow)
rodei, e pedi o print
print(lista_de_notas)
[2, 4, 4, 5, 6, 7, 8, 9, 10]
a mediana é a do meio, já vi que é a nota 6
mas quero fazer do jeito certo
na aula de estatística aprendi que a mediana de uma observação com n ímpar é o número da posição do meio
quantos números eu tenho (n)? já vi no len!
len(lista_de_notas)
9
qual o número da posição do meio? n+1/2 = 9 + 1 = 10/2 = 5
como vou puxar ela na lista?
lista_de_notas[4]
6
A função range
Faz uma lista de maneira automática
lista_range = list(range(0,10,1))
criar list
num intervalo range
de 0
a 10
com passos de 1
a
retornou
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
então entendi de novo que o intervalo vai ser fechado à direita
se eu quisesse até o 10
, ia pedir o11
lista_range = list(range(0,11,1))
print(lista_range)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
FUNÇÕES NATIVAS PARA LISTAS
Adicionar elementos em uma lista
Além de concatenar duas listas, também podemos adicionar elementos a uma lista usando o operador +
linguagens = ["Python", "SQL", "R"]
print(linguagens)
'Python', 'SQL', 'R'
agora vou adicionar mais elementos
linguagens_2 = linguagens + ["Java", "C++"]
print(linguagens_2)
['Python', 'SQL', 'R', 'Java', 'C++']
-
também dá pra adicionar usando a função
append
que é própria para listas
linguagens.append("Java")
linguagens.append("C++")
print(linguagens)
['Python', 'SQL', 'R', 'Java', 'C++']
se eu passar o append
como lista, ele vai inserir uma lista dentro da lista, e não acrescentar os elementos normalmente
linguagens.append(["Java", "C++"])
print(linguagens)
['Python', 'SQL', 'R', ['Java', 'C++']]
para adicionar vários elementos de uma vez em lista mas para adicionar como elementos soltos na lista original, usa-se o extend
linguagens.extend(["Java", "C++"])
print(linguagens)
['Python', 'SQL', 'R', ['Java', 'C++'], 'Java', 'C++']
nesse caso aqui acrescentei sem criar outra lista ou renomear(?)
o insert
adiciona um elemento "Scala"
, mas em uma opção específica 0
linguagens.insert(0,"Scala")
print(linguagens)
['Scala','Python', 'SQL', 'R', ['Java', 'C++'], 'Java', 'C++', 'Java', 'C++']
Remover elementos
o remove
deleta o primeiro elemento que aparecer com aquele nome
linguagens.remove("C++")
print(linguagens)
['Scala','Python', 'SQL', 'R', ['Java', 'C++'], 'Java']
percebi que ele deletou o "C++"
que estava fora da lista embutida
o pop
remove um elemento de acordo com o index, não pelo nome
linguagens.pop(0)
print(linguagens)
['Python', 'SQL', 'R', ['Java', 'C++'], 'Java']
retornou sem o 'Scala'
que botamos no insert
Contar elementos
a função count
conta quantos elementos você tem com aquele nome
linguagens.count("Java")
1
de novo, ele não contou o que estava na lista embutida
Limpar uma lista
linguagens_2.clear
print(linguagens_2)
[ ]
Top comments (0)