Aviso: Este post foi traduzido para o português usando um modelo de tradução automática. Por favor, me avise se encontrar algum erro.
1. Resumo
Vamos fazer uma breve introdução ao Python, explicando os tipos de dados que temos, os operadores, o uso de funções e de classes. Além disso, veremos como usar objetos iteráveis, como usar módulos, etc.

2. Tipos de dados do Python
Existem 7 tipos de dados em Python
- De tipo texto:
str
- Numéricos:
int
,float
,complex
- Sequências:
list
,tuple
,range
- Mapeamento:
dict
- Conjuntos:
set
,frozenset
- Booleanos:
bool
- Binários:
bytes
,bytearray
,memoryview
Podemos obter o tipo de dado através da função type()
type(5.)
float
Python é uma linguagem de tipagem dinâmica, ou seja, você pode ter uma variável de um tipo e depois atribuir outro tipo.
a = 5type(a)
int
a = 'MaximoFN'type(a)
str
Python tipa as variáveis para você, mas se você quiser tipá-las, pode fazer.
b = int(5.1)type(b), b
(int, 5)
Embora b
tenha sido inicializado como 5.1
, ou seja, deveria ser do tipo float
, ao tipá-lo como int
, vemos que é do tipo int
e, além disso, seu valor é 5
2.1. Cadeias de Caracteres
Os strings
são cadeias de caracteres, estas podem ser definidas com aspas duplas "
ou aspas simples '
.
string = "MaximoFN"string
'MaximoFN'
string = 'MaximoFN'string
'MaximoFN'
Para escrever uma string
muito longa e não ter uma linha que ocupe muito espaço, pode-se introduzi-la em várias linhas
string = """Este es un ejemplo decomo estoy introduciendo un stringen varias lineas"""string
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
string = '''Este es un ejemplo decomo estoy introduciendo un stringen varias lineas'''string
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
No entanto, vemos que no meio foi inserido o caractere indica a quebra de linha. Se usarmos a função print()
veremos como já não aparece
print(string)
Este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Como dissemos, as strings são cadeias de caracteres, portanto podemos navegar e iterar através delas.
for i in range(10):# Se indica a la función print que cuando imprima no termine con un salto de# linea para escribir todo en la misma lineaprint(string[i], end='')
Este es un
Podemos obter o comprimento da nossa string através da função len()
len(string)
73
Verificar se há uma string específica dentro da nossa
'ejemplo' in string
True
As strings têm certos atributos úteis, como colocar tudo em maiúsculas
print(string.upper())
ESTE ES UN EJEMPLO DECOMO ESTOY INTRODUCIENDO UN STRINGEN VARIAS LINEAS
tudo em minúsculas
print(string.lower())
este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Substituir caracteres
print(string.replace('o', '@'))
Este es un ejempl@ dec@m@ est@y intr@duciend@ un stringen varias lineas
Obter todas as palavras
print(string.split())
['Este', 'es', 'un', 'ejemplo', 'de', 'como', 'estoy', 'introduciendo', 'un', 'string', 'en', 'varias', 'lineas']
Você pode ver todos os métodos das strings neste enlace
Outra coisa útil que se pode fazer com as strings é concatená-las
string1 = 'Maximo'string2 = 'FN'string1 + string2
'MaximoFN'
Antes explicamos que o caractere \n
correspondia a uma quebra de linha, este caractere especial corresponde a uma série de caracteres especiais chamados Escape Characters
. Vejamos outros
Se declararmos uma string com aspas duplas e quisermos adicionar uma aspa dupla dentro da string, usamos o caractere de escape \"
print("Este es el blog de "MaximoFN"")
Este es el blog de "MaximoFN"
O mesmo com a aspa simples, adicionamos \'
print('Este es el blog de 'MaximoFN'')
Este es el blog de 'MaximoFN'
Agora temos o problema de querer adicionar o caractere \
, pois como vimos, ele é um escape character
, então resolvemos isso colocando duas barras (backslash) \
.
print('Este es el blog de \\MaximoFN\\')
Este es el blog de \MaximoFN\
Já vimos antes o escape character
de nova linha \n
print('Este es el blog de \nMaximoFN')
Este es el blog deMaximoFN
Se quisermos escrever desde o início da linha, adicionamos \r
print('Esto no se imprimirá \rEste es el blog de MaximoFN')
Este es el blog de MaximoFN
Se quisermos adicionar um grande espaço (recuo) usamos \t
print('Este es el blog de \tMaximoFN')
Este es el blog de MaximoFN
Podemos apagar um caractere com \b
print('Este es el blog de \bMaximoFN')
Este es el blog deMaximoFN
Podemos adicionar o código ASCII em octal mediante \ooo
print('\115\141\170\151\155\157\106\116')
MaximoFN
O adicionar o código ASCII em hexadecimal mediante \xhh
print('\x4d\x61\x78\x69\x6d\x6f\x46\x4e')
MaximoFN
Por último, podemos converter outro tipo de dado em uma string
n = 5print(type (n))string = str(n)print(type(string))
<class 'int'><class 'str'>
2.2. Números
2.2.1. Inteiros
Números de tipo inteiro
n = 5n, type(n)
(5, int)
2.2.2. Float
Números de tipo ponto flutuante
n = 5.1n, type(n)
(5.1, float)
2.2.3. Complexos
Números complexos
n = 3 + 5jn, type(n)
((3+5j), complex)
2.2.4. Conversão
Pode-se converter entre tipos de números
n = 5n = float(n)n, type(n)
(5.0, float)
n = 5.1n = complex(n)n, type(n)
((5.1+0j), complex)
n = 5.1n = int(n)n, type(n)
(5, int)
Não é possível converter um número complex
para o tipo int
ou float
.
2.3. Sequências
2.3.1. Listas
As listas guardam múltiplos itens em uma variável. Elas são declaradas através dos símbolos []
, com os itens separados por vírgulas.
lista = ['item0', 'item1', 'item2', 'item3', 'item4', 'item5']lista
['item0', 'item1', 'item2', 'item3', 'item4', 'item5']
Podemos obter o comprimento de uma lista mediante a função len()
len(lista)
6
As listas podem ter itens de diferentes tipos
lista = ['item0', 1, True, 5.3, "item4", 5, 6.6]lista
['item0', 1, True, 5.3, 'item4', 5, 6.6]
Em Python, começa a contar a partir da posição 0, ou seja, se quisermos obter o primeiro elemento da lista
lista[0]
'item0'
Mas uma das coisas poderosas do Python é que, se quisermos acessar a última posição, podemos usar índices negativos
lista[-1]
6.6
Se em vez da última posição da lista quisermos a penúltima
lista[-2]
5
Se quisermos apenas um intervalo de valores, por exemplo, do segundo ao quinto item, acessamos através de [2:5]
lista[2:5]
[True, 5.3, 'item4']
Se o primeiro número do intervalo for omitido, significa que queremos do primeiro item da lista até o item indicado, ou seja, se quisermos do primeiro item até o quinto, usamos [:5]
lista[:5]
['item0', 1, True, 5.3, 'item4']
Se o último número do intervalo for omitido, isso significa que queremos do item indicado até o último. Ou seja, se quisermos do terceiro item até o último, usamos [3:]
.
lista[3:]
[5.3, 'item4', 5, 6.6]
Podemos escolher o range de itens também com números negativos, ou seja, se quisermos do antepenúltimo até o penúltimo usamos [-3:-1]
. Isso é útil quando se tem listas cuja comprimento não se sabe, mas se sabe que se quer um range de valores do final, porque, por exemplo, a lista foi criada com medidas que vão sendo tomadas e se quer saber as últimas medidas.
lista[-3:-1]
['item4', 5]
Pode-se verificar se um item está na lista
'item4' in lista
True
2.3.1.1. Editar listas
As listas em Python são dinâmicas, ou seja, podem ser modificadas. Por exemplo, pode-se modificar o terceiro item.
lista[2] = Falselista
['item0', 1, False, 5.3, 'item4', 5, 6.6]
Também é possível modificar um intervalo de valores
lista[1:4] = [1.1, True, 3]lista
['item0', 1.1, True, 3, 'item4', 5, 6.6]
Valores podem ser adicionados ao final da lista através do método append()
lista.append('item7')lista
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7']
O podemos inserir um valor em uma posição determinada através do método insert()
lista.insert(2, 'insert')lista
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7']
Listas podem ser unidas através do método extend()
lista2 = ['item8', 'item9']lista.extend(lista2)lista
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9']
Não é necessário estender a lista através de outra lista, pode ser feito através de outro tipo de dado iterável do Python (tuplas
, sets
, dicionários
, etc)
tupla = ('item10', 'item11')lista.extend(tupla)lista
['item0',1.1,'insert',True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Podemos eliminar uma posição determinada mediante o método pop()
lista.pop(2)lista
['item0',1.1,True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Se não for especificado o índice, o último item é removido.
lista.pop()lista
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9', 'item10']
Ou pode-se remover um item sabendo seu valor através do método remove()
lista.remove('item7')lista
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Com a função del()
também pode ser usada para eliminar um item da posição indicada.
del lista[3]lista
['item0', 1.1, True, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Se não for indicado o índice, a lista completa é eliminada.
Com o método clear()
eu deixo a lista vazia
lista.clear()lista
[]
Pode-se obter a quantidade de itens com um valor determinado através do método count()
lista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.count(5)
4
Também é possível obter o primeiro índice de um item com um valor determinado através do método index()
lista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.index(5)
0
2.3.1.2. Compreensão de lista
Podemos operar através da lista
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = []# Iteramos por todos los items de la listafor x in fruits:# Si el item contiene el caracter "a" lo añadimos a newlistif "a" in x:newlist.append(x)newlist
['apple', 'banana', 'mango']
Outras das coisas potentes do Python são as list comprehensions
, que permitem fazer tudo em uma única linha e deixar o código mais compacto.
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = [x for x in fruits if "a" in x]newlist
['apple', 'banana', 'mango']
A sintaxe é a seguinte:
newlist = [expressão for item in iterável if condição == True]
Pode ser aproveitado para realizar operações na lista original
newlist = [x.upper() for x in fruits if "a" in x]newlist
['APPLE', 'BANANA', 'MANGO']
2.3.1.3. Ordenar listas
Para ordenar listas usamos o método sort()
lista = [5, 8, 3, 4, 9, 5, 6]lista.sort()lista
[3, 4, 5, 5, 6, 8, 9]
Também as ordena alfabeticamente
lista = ["orange", "mango", "kiwi", "pineapple", "banana"]lista.sort()lista
['banana', 'kiwi', 'mango', 'orange', 'pineapple']
Ao ordenar alfabeticamente, distinga entre maiúsculas e minúsculas.
lista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort()lista
['Pineapple', 'banana', 'kiwi', 'mango', 'orange']
Podem ser ordenados em ordem decrescente através do atributo reverse = True
lista = [5, 8, 3, 4, 9, 5, 6]lista.sort(reverse = True)lista
[9, 8, 6, 5, 5, 4, 3]
Podem ser ordenados da maneira que quisermos usando o atributo key
def myfunc(n):# devuelve el valor absoluto de n - 50return abs(n - 50)lista = [100, 50, 65, 82, 23]lista.sort(key = myfunc)lista
[50, 65, 23, 82, 100]
Isso pode ser aproveitado para, por exemplo, na hora de ordenar, não distinguir entre maiúsculas e minúsculas
lista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort(key = str.lower)lista
['banana', 'kiwi', 'mango', 'orange', 'Pineapple']
Pode-se inverter a lista usando o método reverse
lista = [5, 8, 3, 4, 9, 5, 6]lista.reverse()lista
[6, 5, 9, 4, 3, 8, 5]
2.3.1.4. Copiar listas
Não se pode copiar listas com lista1 = lista2
, pois se lista1
for modificada, lista2
também será modificada.
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1lista1[0] = Truelista2
[True, 8, 3, 4, 9, 5, 6]
Portanto, é necessário usar o método copy()
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1.copy()lista1[0] = Truelista2
[5, 8, 3, 4, 9, 5, 6]
Ó hay que usar o construtor de listas list()
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = list(lista1)lista1[0] = Truelista2
[5, 8, 3, 4, 9, 5, 6]
2.3.1.5. Concatenar listas
Listas podem ser concatenadas usando o operador +
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista = lista1 + lista2lista
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
O mediante o método extend
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista1.extend(lista2)lista1
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
Outra forma de concatenar é repetir a tupla X vezes mediante o operador *
lista1 = ['a', 'b', 'c']lista2 = lista1 * 3lista2
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
2.3.2. Tuplas
As tuplas são semelhantes às listas, guardam múltiplos itens em uma variável, podem conter itens de tipos diferentes, mas não podem ser modificadas nem reordenadas. São definidas através de ()
, com os itens separados por vírgulas.
Como não podem ser modificadas, as tuplas se executam um pouco mais rápido que as listas, portanto, se você não precisar modificar os dados, é melhor usar tuplas em vez de listas.
tupla = ('item0', 1, True, 3.3, 'item4', True)tupla
('item0', 1, True, 3.3, 'item4', True)
Pode-se obter seu comprimento através da função len()
len (tupla)
6
Para criar tuplas com um único elemento é necessário adicionar uma vírgula
tupla = ('item0',)tupla, type(tupla)
(('item0',), tuple)
Para acessar um elemento da tupla, procede-se da mesma forma que com as listas.
tupla = ('item0', 1, True, 3.3, 'item4', True)print(tupla[0])print(tupla[-1])print(tupla[2:4])print(tupla[-4:-2])
item0True(True, 3.3)(True, 3.3)
Podemos verificar se há um item na tupla
'item4' in tupla
True
2.3.2.1. Modificar tuplas
Embora as tuplas não sejam modificáveis, elas podem ser modificadas convertendo-as em listas, modificando a lista e, em seguida, convertendo-a de volta em uma tupla.
lista = list(tupla)lista[4] = 'ITEM4'tupla = tuple(lista)tupla
('item0', 1, True, 3.3, 'ITEM4', True)
Ao convertê-la em lista, podemos fazer todas as modificações vistas nas listas
O que se pode é eliminar a tupla completa
del tuplaif 'tupla' not in locals():print("tupla eliminada")
tupla eliminada
2.3.2.2. Desempacotar tuplas
Quando criamos tuplas, na verdade estamos empacotando dados
tupla = ('item0', 1, True, 3.3, 'item4', True)tupla
('item0', 1, True, 3.3, 'item4', True)
mas podemos desempacotá-los
item0, item1, item2, item3, item4, item5 = tuplaitem0, item1, item2, item3, item4, item5
('item0', 1, True, 3.3, 'item4', True)
Se quisermos tirar menos dados que o comprimento da tupla, adicionamos um *
item0, item1, item2, *item3 = tuplaitem0, item1, item2, item3
('item0', 1, True, [3.3, 'item4', True])
Pode colocar o asterisco *
em outro lugar, se por exemplo o que desejamos é o último item.
item0, item1, *item2, item5 = tuplaitem0, item1, item2, item5
('item0', 1, [True, 3.3, 'item4'], True)
2.3.2.3. Concatenar tuplas
Tuplas podem ser concatenadas utilizando o operador +
tupla1 = ("a", "b" , "c")tupla2 = (1, 2, 3)tupla3 = tupla1 + tupla2tupla3
('a', 'b', 'c', 1, 2, 3)
Outra forma de concatenar é repetir a tupla X vezes mediante o operador *
tupla1 = ("a", "b" , "c")tupla2 = tupla1 * 3tupla2
('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
2.3.2.4. Métodos das tuplas
As tuplas têm dois métodos, o primeiro é o método count()
que retorna o número de vezes que um item aparece dentro da tupla.
tupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.count(5)
4
Outro método é index()
que retorna a primeira posição de um item dentro da tupla.
tupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.index(5)
0
2.3.3. Intervalo
Com range()
podemos criar uma sequência de números, começando de 0 (por padrão), incrementando em 1 (por padrão) e parando antes de um número especificado.
range(início, fim, passo)
Por exemplo, se quisermos uma sequência de 0 a 5 (sem incluir o 5)
for i in range(5):print(f'{i} ', end='')
0 1 2 3 4
Se por exemplo não quisermos que comece em 0
for i in range(2, 5):print(f'{i} ', end='')
2 3 4
for i in range(-2, 5):print(f'{i} ', end='')
-2 -1 0 1 2 3 4
Por último, se não quisermos que se incremente em 1, se por exemplo quisermos uma sequência de números pares.
for i in range(0, 10, 2):print(f'{i} ', end='')
0 2 4 6 8
2.4. Dicionários
Os dicionários são usados para armazenar dados em pares chave:valor
. São modificáveis, não ordenados e não permitem duplicidades. São definidos usando os símbolos {}
. Aceitam itens de diferentes tipos de dados.
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}diccionario
{'brand': 'Ford','model': 'Mustang','year': 1964,'colors': ['red', 'white', 'blue']}
Como foi dito, não permitem duplicidades.
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"year": 2000,"colors": ["red", "white", "blue"]}diccionario["year"]
2000
Pode-se obter seu comprimento através da função len()
len(diccionario)
4
Como se pode ver, a comprimento é 4 e não 5, pois year
é contado apenas uma vez.
2.4.1. Acessar os itens
Para acessar, podemos fazer isso através de sua key
diccionario["model"]
'Mustang'
Também pode ser acessado através do método get
diccionario.get("model")
'Mustang'
Para saber todas as key
s dos dicionários se pode usar o método keys()
diccionario.keys()
dict_keys(['brand', 'model', 'year', 'colors'])
Pode-se usar uma variável para apontar para as key
s do dicionário, com o que chamando-a uma vez é necessário
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a las keysx = diccionario.keys()print(x)# Se añade una nueva keydiccionario["color"] = "white"# Se consulta la variable que apunta a las keyprint(x)
dict_keys(['brand', 'model', 'year'])dict_keys(['brand', 'model', 'year', 'color'])
Para obter os valores do dicionário, pode-se usar o método values()
diccionario.values()
dict_values(['Ford', 'Mustang', 1964, 'white'])
Pode-se usar uma variável para apontar para os values
do dicionário, com isso, chamando-a uma vez é necessário.
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a los valuesx = diccionario.values()print(x)# Se modifica un valuediccionario["year"] = 2020# Se consulta la variable que apunta a los valuesprint(x)
dict_values(['Ford', 'Mustang', 1964])dict_values(['Ford', 'Mustang', 2020])
Se items
inteiros forem desejados, ou seja, key
s e value
s, deve-se usar o método items()
.
diccionario.items()
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Pode-se usar uma variável para apontar para os item
s do dicionário, com o que chamá-la uma vez é necessário
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a los itemsx = diccionario.items()print(x)# Se modifica un valuediccionario["year"] = 2020# Se consulta la variable que apunta a los itemsprint(x)
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 1964)])dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Pode-se verificar se uma key
existe no dicionário
"model" in diccionario
True
2.4.2. Modificar os itens
Pode modificar um item
acessando-o diretamente
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["year"] = 2020diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
Ou pode ser modificado através do método update()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"year": 2020})diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
2.4.3. Adicionar itens
Pode adicionar um item
adicionando-o desta maneira:
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["colour"] = "blue"diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
Ou pode ser adicionado através do método update()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"colour": "blue"})diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
2.4.4. Remover itens
Pode-se eliminar um item
com uma key
específica mediante o método pop()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdiccionario.pop("model")diccionario
{'brand': 'Ford', 'year': 1964}
Ou se pode eliminar um item
com uma key
específica mediante del
indicando o nome da key
entre os símbolos []
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionario["model"]diccionario
{'brand': 'Ford', 'year': 1964}
O dicionário inteiro é removido se del
for usado e não for especificada a key
de um item
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionarioif 'diccionario' not in locals():print("diccionario eliminado")
diccionario eliminado
Se popitem()
é o método a ser usado se deseja remover o último item
inserido.
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina el último item introducidodiccionario.popitem()diccionario
{'brand': 'Ford', 'model': 'Mustang'}
Se quer limpar o dicionário, é necessário usar o método clear()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}diccionario.clear()diccionario
{}
2.4.5. Copiar dicionários
Não se podem copiar dicionários mediante diccionario1 = diccionario2
, já que se diccionario1
for modificado, diccionario2
também será modificado.
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1diccionario1["year"] = 2000diccionario2["year"]
2000
Portanto, é necessário usar o método copy()
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1.copy()diccionario1["year"] = 2000diccionario2["year"]
1964
Ó hay que usar o construtor de dicionários dict()
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = dict(diccionario1)diccionario1["year"] = 2000diccionario2["year"]
1964
2.4.6. Dicionários aninhados
Os dicionários podem ter items
de qualquer tipo de dado, inclusive outros dicionários. A este tipo de dicionários se les denomina dicionários nested
diccionario_nested = {"child1" : {"name" : "Emil","year" : 2004},"child2" : {"name" : "Tobias","year" : 2007},"child3" : {"name" : "Linus","year" : 2011}}diccionario_nested
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
child1 = {"name" : "Emil","year" : 2004}child2 = {"name" : "Tobias","year" : 2007}child3 = {"name" : "Linus","year" : 2011}diccionario_nested = {"child1" : child1,"child2" : child2,"child3" : child3}diccionario_nested
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
2.4.7. Métodos dos dicionários
Estes são os métodos que podem ser usados em dicionários
2.4.8. Compreensão de dicionário
Igual que podíamos fazer list comprehensions
mediante a sintaxe
list_comprehension = [expressão for item in iterável if condição == True]
Podemos fazer dictionaries comprehensions
mediante a seguinte sintaxe
dictionary_comprehension = {expressão_chave: expressão_valor for item in iterável if condição == True}
Vamos ver um exemplo
dictionary_comprehension = {x: x**2 for x in (2, 4, 6) if x > 2}dictionary_comprehension
{4: 16, 6: 36}
2.5. Sets
2.5.1. Conjunto
Os set
s são usados em Python para guardar um conjunto de itens em uma única variável. Eles podem armazenar itens de diferentes tipos. São não ordenados e não têm índice.
Diferem das listas em que não têm nem ordem nem índice.
São declarados com os símbolos {}
Como set
é uma palavra reservada em Python, criamos um set
com o nome set_
set_ = {'item0', 1, 5.3, "item4", 5, 6.6}set_
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Não pode haver itens duplicados, se encontrar algum item duplicado, fica apenas com um.
set_ = {'item0', 1, 5.3, "item4", 5, 6.6, 'item0'}set_
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Pode-se obter o comprimento do set
através da função len()
len(set_)
6
Como se pode ver, o comprimento do set é 6 e não 7, pois ele mantém apenas um 'item0'
.
Pode-se verificar se um item está presente no set
'item4' in set_
True
2.5.1.1. Adicionar itens
Pode-se adicionar um elemento ao conjunto usando o método add()
set_.add(8.8)set_
{1, 5, 5.3, 6.6, 8.8, 'item0', 'item4'}
Pode-se adicionar outro conjunto usando o método `update()'
set2 = {"item5", "item6", 7}set_.update(set2)set_
{1, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
Também é possível adicionar itens de tipos de dados iteráveis de Python
lista = ["item9", 10, 11.2]set_.update(lista)set_
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6', 'item9'}
2.5.1.2. Eliminar itens
Pode-se remover um item específico através do método remove()
set_.remove('item9')set_
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
O mediante o discard()
set_.discard('item6')set_
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5'}
Com o método pop()
pode ser usado para remover o último item, mas como os set
s não são ordenados, não há como saber qual é o último item. O método pop()
retorna o item removido.
print(f"set antes de pop(): {set_}")eliminado = set_.pop()print(f"Se ha eliminado {eliminado}")
set antes de pop(): {1, 5, 5.3, 6.6, 8.8, 7, 10, 11.2, 'item5', 'item0', 'item4'}Se ha eliminado 1
Por meio do método clear()
é possível esvaziar o conjunto
set_.clear()set_
set()
Por último, com del
pode-se eliminar o set
del set_if 'set_' not in locals():print("set eliminado")
set eliminado
2.5.1.3. Unir itens
Uma forma de unir conjuntos é mediante o método union()
set1 = {"a", "b" , "c"}set2 = {1, 2, 3}set3 = set1.union(set2)set3
{1, 2, 3, 'a', 'b', 'c'}
Outra forma é através do método update()
, mas desta maneira um set é adicionado a outro, não é criado um novo.
set1 = {"a", "b" , "c"}set2 = {1, 2, 3}set1.update(set2)set1
{1, 2, 3, 'a', 'b', 'c'}
Estes métodos de união eliminam os duplicados, mas se quisermos obter os elementos duplicados em dois sets usamos o método intersection()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.intersection(set2)set3
{'apple'}
Se quisermos obter os elementos duplicados em dois conjuntos, mas sem criar um novo conjunto, usamos o método intersection_update()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.intersection_update(set2)set1
{'apple'}
Agora ao contrário, se quisermos ficar com os não duplicados usamos o método symmetric_difference()
.
A diferença entre isso e a união entre dois conjuntos é que na união são mantidos todos os itens, mas os que estão duplicados são pegos apenas uma vez. Agora ficamos com os que não estão duplicados.
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.symmetric_difference(set2)set3
{'banana', 'cherry', 'google', 'microsoft'}
Se quisermos ficar com os não duplicados sem criar um novo conjunto, usamos o método symmetric_difference_update()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.symmetric_difference_update(set2)set1
{'banana', 'cherry', 'google', 'microsoft'}
2.5.1.4. Métodos dos conjuntos
Estes são os métodos que podem ser usados em sets
2.5.2. FrozenSet
Os frozenset
s são como os set
s, mas com a diferença de que são imutáveis, assim como as tupla
s são como as list
s, mas imutáveis. Portanto, não podemos adicionar ou remover itens.
2.6. Booleanos
Há apenas dois booleanos em Python: True
e False
Com a função bool()
pode ser usada para avaliar se algo é True
ou False
print(bool("Hello"))print(bool(15))print(bool(0))
TrueTrueFalse
2.6.1. Outros tipos de dados True e False
Os seguintes dados são True
:
- Qualquer string que não esteja vazia
- Qualquer número exceto o 0
- Qualquer lista, tupla, dicionário ou set que não esteja vazio
print(bool("Hola"))print(bool(""))
TrueFalse
print(bool(3))print(bool(0))
TrueFalse
lista = [1, 2, 3]print(bool(lista))lista = []print(bool(lista))
TrueFalse
tupla = (1, 2, 3)print(bool(tupla))tupla = ()print(bool(tupla))
TrueFalse
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}print(bool(diccionario))diccionario.clear()print(bool(diccionario))
TrueFalse
set_ = {'item0', 1, 5.3, "item4", 5, 6.6}print(bool(set_))set_.clear()print(bool(set_))
TrueFalse
2.7. Binários
2.7.1. Bytes
O tipo bytes
é uma sequência imutável de bytes. Apenas aceitam caracteres ASCII. Também se podem representar os bytes através de números inteiros cujos valores devem satisfazer 0 <= x < 256
Para criar um tipo byte devemos introduzir antes o caractere b
byte = b"MaximoFN"byte
b'MaximoFN'
Também podem ser criados através do seu construtor bytes()
byte = bytes(10)byte
b'