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.
📚 **Esta entrada faz parte da série _Guia completo de Python_**, dividida em três capítulos que se leem em ordem:
> * 👉 **Parte 1: Tipos de datos**
* Parte 2: Operadores, controle de fluxo e funções
* Parte 3: Classes, objetos e temas avançados
1. Resumo
Vamos a 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 os objetos iteráveis, como usar módulos, etc.
2. Tipos de dados de Python
Existem 7 tipos de dados em Python
- Do tipo texto:
str - Numéricos:
int,float,complex - Sequências:
list,tuple,range - Mapeamento:
dict5. Conjuntos:set,frozenset - Booleanos:
bool - Binários:
bytes,bytearray,memoryview
Podemos obter o tipo de dado por meio da função type()
InputPythontype(5.)Copied
float
Python é uma linguagem de tipagem dinâmica, ou seja, você pode ter uma variável de um tipo e depois atribuir a ela outro tipo
InputPythona = 5type(a)Copied
int
InputPythona = 'MaximoFN'type(a)Copied
str
Python tipa as variáveis por ti, mas se quiseres tipá-las tu, também é possível.
InputPythonb = int(5.1)type(b), bCopied
(int, 5)
Embora b tenha sido inicializado como 5.1, ou seja, deveria ser do tipo float, ao o tiparmos para o tipo int, vemos que ele é do tipo int e, além disso, seu valor é 5
2.1. Strings
As strings são cadeias de caracteres; estas podem ser definidas com aspas duplas " ou aspas simples '
InputPythonstring = "MaximoFN"stringCopied
'MaximoFN'
InputPythonstring = 'MaximoFN'stringCopied
'MaximoFN'
Para escrever uma string muito longa e não ter uma linha que ocupe muito espaço, ela pode ser introduzida em várias linhas
InputPythonstring = """Este es un ejemplo decomo estoy introduciendo un stringen varias lineas"""stringCopied
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
InputPythonstring = '''Este es un ejemplo decomo estoy introduciendo un stringen varias lineas'''stringCopied
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
No entanto, vemos que no meio ele inseriu o caractere de quebra de linha. Se usarmos a função print() veremos como já não aparece
InputPythonprint(string)Copied
Este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Como dissemos, as strings são cadeias de caracteres, então podemos navegar e iterar através delas
InputPythonfor 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='')Copied
Este es un
Podemos obter o comprimento da nossa string usando a função len()
InputPythonlen(string)Copied
73
Verificar se há alguma string determinada dentro da nossa
InputPython'ejemplo' in stringCopied
True
As strings têm certos atributos úteis, como colocar tudo em maiúsculas
InputPythonprint(string.upper())Copied
ESTE ES UN EJEMPLO DECOMO ESTOY INTRODUCIENDO UN STRINGEN VARIAS LINEAS
tudo em minúsculas
InputPythonprint(string.lower())Copied
este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Substituir caracteres
InputPythonprint(string.replace('o', '@'))Copied
Este es un ejempl@ dec@m@ est@y intr@duciend@ un stringen varias lineas
Obter todas as palavras
InputPythonprint(string.split())Copied
['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
InputPythonstring1 = 'Maximo'string2 = 'FN'string1 + string2Copied
'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 \"
InputPythonprint("Este es el blog de "MaximoFN"")Copied
Este es el blog de "MaximoFN"
O mesmo com a aspa simples, adicionamos \'
InputPythonprint('Este es el blog de 'MaximoFN'')Copied
Este es el blog de 'MaximoFN'
Agora temos o problema de que, se quisermos adicionar o caractere \, como vimos, ele é um escape character, então o solucionamos colocando dupla barra (backslash) \
InputPythonprint('Este es el blog de \\MaximoFN\\')Copied
Este es el blog de \MaximoFN\
Já vimos antes o escape character de nova linha \n
InputPythonprint('Este es el blog de \nMaximoFN')Copied
Este es el blog deMaximoFN
Se quisermos escrever desde o início da linha, adicionamos \r
InputPythonprint('Esto no se imprimirá \rEste es el blog de MaximoFN')Copied
Este es el blog de MaximoFN
Se quisermos adicionar um grande espaço (recuo), usamos \t
InputPythonprint('Este es el blog de \tMaximoFN')Copied
Este es el blog de MaximoFN
Podemos apagar um caractere com \b
InputPythonprint('Este es el blog de \bMaximoFN')Copied
Este es el blog deMaximoFN
Podemos adicionar o código ASCII em octal por meio de \ooo
InputPythonprint('\115\141\170\151\155\157\106\116')Copied
MaximoFN
Ou adicionar o código ASCII em hexadecimal por meio de \xhh
InputPythonprint('\x4d\x61\x78\x69\x6d\x6f\x46\x4e')Copied
MaximoFN
Por último, podemos converter outro tipo de dado em uma string
InputPythonn = 5print(type (n))string = str(n)print(type(string))Copied
<class 'int'><class 'str'>
2.2. Números
2.2.1. Inteiros
Números do tipo inteiro
InputPythonn = 5n, type(n)Copied
(5, int)
2.2.2. Float
Números de ponto flutuante
InputPythonn = 5.1n, type(n)Copied
(5.1, float)
2.2.3. Complexos
Números complexos
InputPythonn = 3 + 5jn, type(n)Copied
((3+5j), complex)
2.2.4. Conversão
É possível converter entre tipos numéricos
InputPythonn = 5n = float(n)n, type(n)Copied
(5.0, float)
InputPythonn = 5.1n = complex(n)n, type(n)Copied
((5.1+0j), complex)
InputPythonn = 5.1n = int(n)n, type(n)Copied
(5, int)
Não é possível converter um número complex para o tipo int ou para o tipo float
2.3. Sequências
2.3.1. Listas
As listas guardam múltiplos itens em uma variável. Elas são declaradas usando os símbolos [], com os itens separados por vírgulas
InputPythonlista = ['item0', 'item1', 'item2', 'item3', 'item4', 'item5']listaCopied
['item0', 'item1', 'item2', 'item3', 'item4', 'item5']
Podemos obter o comprimento de uma lista mediante a função len()
InputPythonlen(lista)Copied
6
As listas podem ter itens de diferentes tipos
InputPythonlista = ['item0', 1, True, 5.3, "item4", 5, 6.6]listaCopied
['item0', 1, True, 5.3, 'item4', 5, 6.6]
Em Python, começa-se a contar a partir da posição 0, ou seja, se quisermos obter o primeiro elemento da lista
InputPythonlista[0]Copied
'item0'
Mas uma das coisas poderosas do Python é que, se quisermos acessar a última posição, podemos usar índices negativos
InputPythonlista[-1]Copied
6.6
Se em vez da última posição da lista quisermos a penúltima
InputPythonlista[-2]Copied
5
Se quisermos apenas um intervalo de valores, por exemplo, do segundo ao quinto item, acessamos por meio de [2:5]
InputPythonlista[2:5]Copied
[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]
InputPythonlista[:5]Copied
['item0', 1, True, 5.3, 'item4']
Se o último número do intervalo for omitido, significa que queremos do item indicado até o último. Ou seja, se queremos do terceiro item até o último, usamos [3:]
InputPythonlista[3:]Copied
[5.3, 'item4', 5, 6.6]
Podemos escolher o intervalo 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 têm listas das quais não se sabe o seu comprimento, mas se sabe que se quer um intervalo de valores do final, porque, por exemplo, a lista foi criada com medições que vão sendo feitas e quer-se saber as últimas médias
InputPythonlista[-3:-1]Copied
['item4', 5]
É possível verificar se um item está na lista
InputPython'item4' in listaCopied
True
2.3.1.1. Editar listas
As listas em Python são dinâmicas, ou seja, podem ser modificadas. Por exemplo, é possível modificar o terceiro item
InputPythonlista[2] = FalselistaCopied
['item0', 1, False, 5.3, 'item4', 5, 6.6]
Também se pode modificar um intervalo de valores
InputPythonlista[1:4] = [1.1, True, 3]listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6]
Podem ser adicionados valores ao final da lista por meio do método append()
InputPythonlista.append('item7')listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7']
Ou podemos inserir um valor em uma posição determinada por meio do método insert()
InputPythonlista.insert(2, 'insert')listaCopied
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7']
Podem-se unir listas através do método extend()
InputPythonlista2 = ['item8', 'item9']lista.extend(lista2)listaCopied
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9']
Não é necessário estender a lista por meio de outra lista, isso pode ser feito por meio de outro tipo de dado iterável do Python (tuplas, sets, dicionários, etc)
InputPythontupla = ('item10', 'item11')lista.extend(tupla)listaCopied
['item0',1.1,'insert',True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Podemos remover uma posição determinada mediante o método pop()
InputPythonlista.pop(2)listaCopied
['item0',1.1,True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Se o índice não for especificado, o último item é removido
InputPythonlista.pop()listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9', 'item10']
Ou é possível eliminar um item sabendo seu valor por meio do método remove()
InputPythonlista.remove('item7')listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Com a função del() também se pode eliminar um item da posição indicada
InputPythondel lista[3]listaCopied
['item0', 1.1, True, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Se não for indicado o índice, a lista completa será eliminada
Com o método clear() deixo a lista vazia
InputPythonlista.clear()listaCopied
[]
Pode-se obter a quantidade de itens com um valor determinado por meio do método count()
InputPythonlista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.count(5)Copied
4
Também é possível obter o primeiro índice de um item com um valor determinado por meio do método index()
InputPythonlista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.index(5)Copied
0
2.3.1.2. Comprensión de listas
Podemos operar através da lista
InputPythonfruits = ["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)newlistCopied
['apple', 'banana', 'mango']
Outras coisas poderosas do Python são as list comprehensions, que permitem fazer tudo em uma única linha e deixam o código mais compacto
InputPythonfruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = [x for x in fruits if "a" in x]newlistCopied
['apple', 'banana', 'mango']
A sintaxe é a seguinte:
newlist = [expression for item in iterable if condition == True]Pode ser aproveitado para realizar operações na lista original
InputPythonnewlist = [x.upper() for x in fruits if "a" in x]newlistCopied
['APPLE', 'BANANA', 'MANGO']
2.3.1.3. Ordenar listas
Para ordenar listas usamos o método sort()
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.sort()listaCopied
[3, 4, 5, 5, 6, 8, 9]
Também as ordena alfabeticamente
InputPythonlista = ["orange", "mango", "kiwi", "pineapple", "banana"]lista.sort()listaCopied
['banana', 'kiwi', 'mango', 'orange', 'pineapple']
Ao ordenar alfabeticamente, distingue entre maiúsculas e minúsculas
InputPythonlista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort()listaCopied
['Pineapple', 'banana', 'kiwi', 'mango', 'orange']
Podem ser ordenados em ordem decrescente por meio do atributo reverse = True
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.sort(reverse = True)listaCopied
[9, 8, 6, 5, 5, 4, 3]
Podem ser ordenados da maneira que quisermos por meio do atributo key
InputPythondef myfunc(n):# devuelve el valor absoluto de n - 50return abs(n - 50)lista = [100, 50, 65, 82, 23]lista.sort(key = myfunc)listaCopied
[50, 65, 23, 82, 100]
Pode-se aproveitar isso para que, por exemplo, na hora de ordenar, não distinga entre maiúsculas e minúsculas
InputPythonlista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort(key = str.lower)listaCopied
['banana', 'kiwi', 'mango', 'orange', 'Pineapple']
É possível inverter a lista usando o método reverse
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.reverse()listaCopied
[6, 5, 9, 4, 3, 8, 5]
2.3.1.4. Copiar listas
Não se podem copiar listas por meio de lista1 = lista2, já que, se lista1 for modificada, lista2 também será modificada
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1lista1[0] = Truelista2Copied
[True, 8, 3, 4, 9, 5, 6]
Então, deve-se usar o método copy()
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1.copy()lista1[0] = Truelista2Copied
[5, 8, 3, 4, 9, 5, 6]
Ou é preciso usar o construtor de listas list()
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = list(lista1)lista1[0] = Truelista2Copied
[5, 8, 3, 4, 9, 5, 6]
2.3.1.5. Concatenar listas
Podem-se concatenar listas por meio do operador +
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista = lista1 + lista2listaCopied
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
Ou por meio do método extend
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista1.extend(lista2)lista1Copied
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
Outra forma de concatenar é repetir a tupla X vezes por meio do operador *
InputPythonlista1 = ['a', 'b', 'c']lista2 = lista1 * 3lista2Copied
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
2.3.2. Tuplas
As tuplas são semelhantes às listas, guardam vários itens em uma variável, podem conter itens de tipos diferentes, mas não podem ser modificadas nem reordenadas. Elas são definidas por meio de (), com os itens separados por vírgulas
Por não poderem ser modificadas, as tuplas são executadas um pouco mais rapidamente do que as listas, por isso, se não precisas modificar os dados, é melhor utilizar tuplas em vez de listas
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)tuplaCopied
('item0', 1, True, 3.3, 'item4', True)
Pode-se obter seu comprimento por meio da função len()
InputPythonlen (tupla)Copied
6
Para criar tuplas com um único elemento, é necessário adicionar uma vírgula
InputPythontupla = ('item0',)tupla, type(tupla)Copied
(('item0',), tuple)
Para acessar um elemento da tupla, procede-se da mesma forma que com as listas
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)print(tupla[0])print(tupla[-1])print(tupla[2:4])print(tupla[-4:-2])Copied
item0True(True, 3.3)(True, 3.3)
Podemos verificar se há um item na tupla
InputPython'item4' in tuplaCopied
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 depois convertendo-a novamente em uma tupla
InputPythonlista = list(tupla)lista[4] = 'ITEM4'tupla = tuple(lista)tuplaCopied
('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 fazer é eliminar a tupla completa
InputPythondel tuplaif 'tupla' not in locals():print("tupla eliminada")Copied
tupla eliminada
2.3.2.2. Desempacotar tuplas
Quando criamos tuplas, na verdade estamos empacotando dados
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)tuplaCopied
('item0', 1, True, 3.3, 'item4', True)
mas podemos descompactá-los
InputPythonitem0, item1, item2, item3, item4, item5 = tuplaitem0, item1, item2, item3, item4, item5Copied
('item0', 1, True, 3.3, 'item4', True)
Se quisermos extrair menos dados do que o comprimento da tupla, adicionamos um *
InputPythonitem0, item1, item2, *item3 = tuplaitem0, item1, item2, item3Copied
('item0', 1, True, [3.3, 'item4', True])
Pode-se colocar o asterisco * em outra parte se, por exemplo, o que queremos é o último item
InputPythonitem0, item1, *item2, item5 = tuplaitem0, item1, item2, item5Copied
('item0', 1, [True, 3.3, 'item4'], True)
2.3.2.3. Concatenar tuplas
As tuplas podem ser concatenadas usando o operador +
InputPythontupla1 = ("a", "b" , "c")tupla2 = (1, 2, 3)tupla3 = tupla1 + tupla2tupla3Copied
('a', 'b', 'c', 1, 2, 3)
Outra forma de concatenar é repetir a tupla X vezes mediante o operador *
InputPythontupla1 = ("a", "b" , "c")tupla2 = tupla1 * 3tupla2Copied
('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 devolve o número de vezes que um item aparece dentro da tupla
InputPythontupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.count(5)Copied
4
Outro método é index() que devolve a primeira posição de um item dentro da tupla
InputPythontupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.index(5)Copied
0
2.3.3. Faixa
Com range() podemos criar uma sequência de números, começando a partir de 0 (por padrão), incrementando em 1 (por padrão) e parando antes de um número especificado
range(start, stop, step)Por exemplo, se quisermos uma sequência de 0 a 5 (sem incluir o 5)
InputPythonfor i in range(5):print(f'{i} ', end='')Copied
0 1 2 3 4
Se, por exemplo, não queremos que comece em 0
InputPythonfor i in range(2, 5):print(f'{i} ', end='')Copied
2 3 4
InputPythonfor i in range(-2, 5):print(f'{i} ', end='')Copied
-2 -1 0 1 2 3 4
Por fim, se não quisermos que seja incrementado em 1, por exemplo, se quisermos uma sequência de números pares.
InputPythonfor i in range(0, 10, 2):print(f'{i} ', end='')Copied
0 2 4 6 8
2.4. Dicionários
Os dicionários são usados para guardar dados em pares key:value. São modificáveis, não ordenados e não permitem duplicidades. São definidos por meio dos símbolos {}. Admitem itens de diferentes tipos de dados
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}diccionarioCopied
{'brand': 'Ford','model': 'Mustang','year': 1964,'colors': ['red', 'white', 'blue']}
Como foi dito, eles não permitem duplicidades
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"year": 2000,"colors": ["red", "white", "blue"]}diccionario["year"]Copied
2000
Pode-se obter seu comprimento por meio da função len()
InputPythonlen(diccionario)Copied
4
Como se pode ver, o comprimento é 4 e não 5, já que year o conta apenas uma vez
2.4.1. Aceder aos itens
Para acessar um elemento, podemos fazê-lo através de sua key
InputPythondiccionario["model"]Copied
'Mustang'
Também pode ser acessado por meio do método get
InputPythondiccionario.get("model")Copied
'Mustang'
Para saber todas as keys dos dicionários, pode-se usar o método keys()
InputPythondiccionario.keys()Copied
dict_keys(['brand', 'model', 'year', 'colors'])
Pode-se usar uma variável para apontar para as keys do dicionário, com o que, chamando-a uma vez, é necessário
InputPythondiccionario = {"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)Copied
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()
InputPythondiccionario.values()Copied
dict_values(['Ford', 'Mustang', 1964, 'white'])
Pode-se usar uma variável para apontar para os valuess do dicionário, com o que chamando-a uma vez é necessário
InputPythondiccionario = {"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)Copied
dict_values(['Ford', 'Mustang', 1964])dict_values(['Ford', 'Mustang', 2020])
Se o que se quer são os items inteiros, ou seja keys e values, é preciso usar o método items()
InputPythondiccionario.items()Copied
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Pode-se usar uma variável para apontar para os items do dicionário, de modo que, ao chamá-la uma vez, é necessário
InputPythondiccionario = {"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)Copied
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
InputPython"model" in diccionarioCopied
True
2.4.2. Modificar os itens
É possível modificar um item acessando-o diretamente?
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["year"] = 2020diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
Ou pode ser modificado por meio do método update()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"year": 2020})diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
2.4.3. Adicionar itens
Pode-se adicionar um item acrescentando-o desta maneira:
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["colour"] = "blue"diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
Ou pode ser adicionado por meio do método update()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"colour": "blue"})diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
2.4.4. Remover itens
É possível eliminar um item com uma key específica usando o método pop()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdiccionario.pop("model")diccionarioCopied
{'brand': 'Ford', 'year': 1964}
Ou é possível eliminar um item com uma key específica usando del, indicando o nome da key entre os símbolos []
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionario["model"]diccionarioCopied
{'brand': 'Ford', 'year': 1964}
O dicionário inteiro é eliminado se del for usado e a key de um item não for especificada
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionarioif 'diccionario' not in locals():print("diccionario eliminado")Copied
diccionario eliminado
Se o que se deseja é eliminar o último item introduzido, pode-se usar o método popitem()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina el último item introducidodiccionario.popitem()diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang'}
Se se quiser limpar o dicionário, é preciso usar o método clear()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}diccionario.clear()diccionarioCopied
{}
2.4.5. Copiar dicionários
Não se podem copiar dicionários por meio de diccionario1 = diccionario2, já que, se diccionario1 for modificado, diccionario2 também é modificado
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1diccionario1["year"] = 2000diccionario2["year"]Copied
2000
Portanto, é necessário usar o método copy()
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1.copy()diccionario1["year"] = 2000diccionario2["year"]Copied
1964
Ou é preciso usar o construtor de dicionários dict()
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = dict(diccionario1)diccionario1["year"] = 2000diccionario2["year"]Copied
1964
2.4.6. Dicionários aninhados
Os dicionários podem ter items de qualquer tipo de dado, inclusive outros dicionários. A esse tipo de dicionários se chama dicionários nested
InputPythondiccionario_nested = {"child1" : {"name" : "Emil","year" : 2004},"child2" : {"name" : "Tobias","year" : 2007},"child3" : {"name" : "Linus","year" : 2011}}diccionario_nestedCopied
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
InputPythonchild1 = {"name" : "Emil","year" : 2004}child2 = {"name" : "Tobias","year" : 2007}child3 = {"name" : "Linus","year" : 2011}diccionario_nested = {"child1" : child1,"child2" : child2,"child3" : child3}diccionario_nestedCopied
{'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 nos dicionários
2.4.8. Compreensão de dicionário
Assim como podíamos fazer list comprehensions por meio da sintaxe
list_comprehension = [expressão for item em iterable if condition == True]Podemos fazer dictionaries comprehensions mediante a seguinte sintaxe
dictionary_comprehension = {expressão_chave: expressão_valor for item in iterable if condition == True}Vamos ver um exemplo
InputPythondictionary_comprehension = {x: x**2 for x in (2, 4, 6) if x > 2}dictionary_comprehensionCopied
{4: 16, 6: 36}
2.5. Conjuntos
2.5.1. Conjunto
Os sets são usados em Python para armazenar um conjunto de itens em uma única variável. Podem ser armazenados itens de diferentes tipos. São não ordenados e não têm índice.
Diferenciam-se das listas por não terem ordem nem índice.
São declarados por meio dos símbolos {}
Como set é uma palavra reservada em Python, criamos um set com o nome set_
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6}set_Copied
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Não pode haver itens duplicados, se encontrar algum item duplicado, fica apenas com um.
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6, 'item0'}set_Copied
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Pode-se obter o comprimento do set por meio da função len()
InputPythonlen(set_)Copied
6
Como se pode ver, o comprimento do set é 6 e não 7, já que ele fica com apenas um 'item0'
Pode-se verificar se um item está no conjunto
InputPython'item4' in set_Copied
True
2.5.1.1. Adicionar itens
É possível adicionar um elemento ao conjunto usando o método add()
InputPythonset_.add(8.8)set_Copied
{1, 5, 5.3, 6.6, 8.8, 'item0', 'item4'}
Pode-se adicionar outro conjunto por meio do método update()
InputPythonset2 = {"item5", "item6", 7}set_.update(set2)set_Copied
{1, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
Também podem ser adicionados itens de tipos de dados iteráveis do Python
InputPythonlista = ["item9", 10, 11.2]set_.update(lista)set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6', 'item9'}
2.5.1.2. Remover itens
É possível remover um item específico por meio do método remove()
InputPythonset_.remove('item9')set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
Ou por meio do método discard()
InputPythonset_.discard('item6')set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5'}
Através do método pop(), é possível remover o último item, mas como os sets não são ordenados, não há como saber qual é o último item. O método pop() retorna o item removido
InputPythonprint(f"set antes de pop(): {set_}")eliminado = set_.pop()print(f"Se ha eliminado {eliminado}")Copied
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
InputPythonset_.clear()set_Copied
set()
Por fim, com del é possível eliminar o set
InputPythondel set_if 'set_' not in locals():print("set eliminado")Copied
set eliminado
2.5.1.3. Unir itens
Uma forma de unir conjuntos é por meio do método union()
InputPythonset1 = {"a", "b" , "c"}set2 = {1, 2, 3}set3 = set1.union(set2)set3Copied
{1, 2, 3, 'a', 'b', 'c'}
Outra forma é por meio do método update(), mas dessa maneira um conjunto é adicionado a outro, não se cria um novo
InputPythonset1 = {"a", "b" , "c"}set2 = {1, 2, 3}set1.update(set2)set1Copied
{1, 2, 3, 'a', 'b', 'c'}
Esses métodos de união eliminam os duplicados, mas se quisermos obter os elementos duplicados em dois conjuntos, usamos o método intersection()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.intersection(set2)set3Copied
{'apple'}
Se quisermos obter os elementos duplicados em dois sets, mas sem criar um novo set, usamos o método intersection_update()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.intersection_update(set2)set1Copied
{'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 ficam com todos os itens, mas os que estão duplicados são considerados apenas uma vez. Agora ficamos com os que não estão duplicados.
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.symmetric_difference(set2)set3Copied
{'banana', 'cherry', 'google', 'microsoft'}
Se quisermos ficar com os não duplicados sem criar um novo conjunto, usamos o método symmetric_difference_update()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.symmetric_difference_update(set2)set1Copied
{'banana', 'cherry', 'google', 'microsoft'}
2.5.1.4. Métodos dos conjuntos
Estes são os métodos que podem ser usados nos sets
2.5.2. FrozenSet
Os frozensets são como os sets, mas com a ressalva de que são imutáveis, assim como as tuplas são como as lists, mas imutáveis. Portanto, não poderemos adicionar ou eliminar itens
2.6. Booleanos
Há apenas dois booleanos em Python: True e False
Por meio da função bool() é possível avaliar se qualquer coisa é True ou False
InputPythonprint(bool("Hello"))print(bool(15))print(bool(0))Copied
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 0* Qualquer lista, tupla, dicionário ou conjunto que não esteja vazio
InputPythonprint(bool("Hola"))print(bool(""))Copied
TrueFalse
InputPythonprint(bool(3))print(bool(0))Copied
TrueFalse
InputPythonlista = [1, 2, 3]print(bool(lista))lista = []print(bool(lista))Copied
TrueFalse
InputPythontupla = (1, 2, 3)print(bool(tupla))tupla = ()print(bool(tupla))Copied
TrueFalse
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}print(bool(diccionario))diccionario.clear()print(bool(diccionario))Copied
TrueFalse
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6}print(bool(set_))set_.clear()print(bool(set_))Copied
TrueFalse
2.7. Binários
2.7.1. Bytes
O tipo bytes é uma sequência imutável de bytes. Só admitem caracteres ASCII. Também se podem representar os bytes por meio de números inteiros cujos valores devem cumprir 0 <= x < 256
Para criar um tipo byte devemos introduzir antes o caractere b
InputPythonbyte = b"MaximoFN"byteCopied
b'MaximoFN'
Também podem ser criadas por meio do seu construtor bytes()
InputPythonbyte = bytes(10)byteCopied
b'