O python tem 5 tipos principais de dados:
Existem três tipos numéricos em Python:
Variáveis de tipos numéricos são declaradas com a atribuição de um valor numérico à variável.
Para verificar o tipo de qualquer objeto em Python, use a função type().
x = 1 # int
y = 2.8 # float
z = 1j # complex
print(type(x))
print(type(y))
print(type(z))
O tipo int é um número inteiro, positivo ou negativo, sem decimais, de comprimento ilimitado.
x = 1
y = 35656222554887711
z = -3255522
print(type(x))
print(type(y))
print(type(z))
O tipo float é um número de ponto flutuante, positivo ou negativo, contendo uma ou mais casas decimais.
x = 1.10
y = 1.0
z = -35.59
print(type(x))
print(type(y))
print(type(z))
O tipo float também podem usar notação científica com e para indicar a potência de 10.
x = 35e3
y = 12E4
z = -87.7e100
print(type(x))
print(type(y))
print(type(z))
Os números complexos são escritos com "j" na parte imaginária.
x = 3+5j
y = 5j
z = -5j
print(type(x))
print(type(y))
print(type(z))
Valores numéricos podem ter o tipo convertido para outro com os métodos int(), float() e complex()
x = 1 # int
y = 2.8 # float
z = 1j # complex
a = complex(x) # converter de int para complex
b = float(x) # converter de int para float
c = int(y) # converter de float para int
print(x, y, z)
print( a, b, c)
print(type(x), type(y), type(z))
print(type(a), type(b), type(c))
Nota: Números complexos não podem ser convertidos para outro tipo de número.
Python não tem uma função para gerar números aleatórios, mas tem o módulo embutido random.
import random
# número aleatório entre 1 e 9
print(random.randrange(1, 10))
Textos (referidos em inglês como strings) são cadeias de caracteres delimitados por aspas simples ou aspas duplas.
O conteúdo do texto 'olá' é o mesmo "olá", pois é constituido pelos caracteres entre as aspas.
O tipo dos valores de textos é str.
x = "Alô"
y = 'Alô'
print(x)
print(y)
print(type(x))
print(type(y))
A atribuições de textos podem ser feitas tanto com aspas simples como duplas desde que sejam iniciadas e encerradas com o mesmo tipo.
A combinação de aspas simples e duplas não é permitida, gerando erro.
txt = "Este é um código invalido'
print(txt)
A atribuição de um texto a uma variável é feita com a declaração do nome da variável seguido pelo sinal de igual e o texto entre aspas simples ou duplas.
a = "Alô!"
print(a)
Um texto com várias linhas pode ser atribuido a uma variável com a utilização de três aspas simples ou duplas seguidas.
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
#
b = '''Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.'''
#
print("--- a")
print(a)
#
print("--- b")
print(b)
Você pode retornar um intervalo de caracteres usando a sintaxe de fatiamento.
Especifique o índice inicial e o índice final, separados por dois pontos, para retornar uma parte de um texto.
No exemplo abaixo obtermos o texto compreendido entre a posição 2 (incluida) até a posição 8 (não incluída).
b = "Alô, mundo!"
print(b[2:8])
Nota: O primeiro caractere tem índice 0.
A omissão da posição inicial determinará o fatiamento a partir da primeira posição.
txt = "Alô, mundo!"
print(txt[:8])
A omissão da posição final determinará o fatiamento até a última posição.
txt = "Alô, mundo!"
print(txt[2:])
Use índices negativos para iniciar o fatiamento a partir do final do texto.
No exemplo abaixo é retornado o texto da posição -2 (incluída) até a posição -5 (não incluída).
txt = "Alô, mundo!"
print(txt[-5:-2])
Python tem um conjunto de métodos integrados com textos.
O método upper() retorna o texto com letras em maiúsculo, inclusíve as acentuadas.
a = "alô, mundo!"
print(a.upper())
O método lower() retorna o texto com letras em minúsculo, inclusíve as acentuadas.
a = "ALÔ, MUNDO!"
print(a.lower())
Espaços no início ou final de textos são removidos com o método strip().
a = " Alô, mundo! "
print("|{}|".format(a))
print("|{}|".format(a.strip()))
O método replace() de um texto substitui uma determinada sequência de caracteres por outro texto, sem alterar o texto original.
a = "Alô, mundo!"
b = a.replace("mundo", "Brasil")
print(a)
print(b)
O método split() retorna uma lista de texto usando um separador especificado com as partes entre o separador como os itens da lista.
a = "Alô, mundo!"
print(a.split(",")) # retorna ['Alô', ' mundo!']
Para concatenar dois textos é utilizado o operador "+".
a = "Alô"
b = "mundo"
c = a + ", " + b
print(c)
Textos podem ser formatadas para exibição conforme necessário com o método format().
São adicionados marcadores de posição com {n} (colchetes), onde n é a posição argumento na formatação do texto.
Se n for omitido os argumentos da formatação serão apresentados na ondem em que os colchetes aparecem no texto.
A concatenação de textos e números com o operador "+" não é permitida e causa erro.
idade = 58
txt = "Tenho " + idade + " anos"
Combinamos textos e números utilizados como argumentos do método format() de um texto.
nome ="Roberto"
idade = 58
txt = "Meu nome é {} e tenho {} anos."
print(txt.format(nome,idade))
O método format() recebe um número ilimitado de argumentos, colocados nos respectivos espaços reservados por colchetes.
quantidade = 3
num_item = 567
preco = 49.95
minha_ordem = "Eu quero {} unidades do item {} por {} reais."
print(minha_ordem.format(quantidade, num_item, preco))
A formatação pode ter um argumento apenas.
preco = 49
txt = "O preço é {} reais"
print(txt.format(preco))
A formatação pode ter vários argumentos.
num_item = 10
nome_item = "parafuso"
preco_item = 49.28
qtd_item = 72
txt = "o item {} é o {} e tem {} itens com o preço de {}"
print(txt.format(num_item, nome_item, qtd_item, preco_item))
Você pode adicionar parâmetros dentro das chaves para especificar como converter o valor.
Formate o preço a ser exibido como um número com duas casas decimais.
txt = "O preço é {:.2f} reais"
E adicione mais espaços reservados:
quantidade = 3
num_item = 567
preço = 49
minha_ordem = "Quero {} partes do item número {} por {:.2f} reais."
print(minha_ordem.format(quantidade, num_item, preço))
Você pode usar números de índice {n} para garantir que os argumentos sejam colocados nos espaços reservados corretos.
quantidade = 3
num_item = 567
preco = 49.95
minha_ordem = "desejo pagar {2} reais por {0} itens {1}."
print(minha_ordem.format(quantidade, num_item, preco))
Números de índice são números dentro das chaves {} usados para posicionar os valores nos espaços determinados.
quantidade = 3
num_item = 567
preço = 49
minha_ordem = "Eu quero {0} peças do item número {1} por {2:.2f} reais."
print(minha_ordem.format(quantidade, num_item, preço))
Além disso, se você quiser fazer referência ao mesmo valor mais de uma vez, use o número de índice:
idade = 36
nome = "João"
txt = "Seu nome é {1}. {1} tem {0} anos."
print(txt.format(idade, nome))
Você também pode usar índices nomeados inserindo um nome dentro das chaves {carname}, mas você deve usar nomes ao passar os valores de parâmetro txt.format(carname = "Ford"):
minha_ordem = "Tenho um {carname}, é um {model}."
print(minha_ordem.format(carname = "Ford", model = "Mustang"))
Para inserir caracteres ilegais em um texto, utilize os caracteres de escape.
Um caractere de escape é uma barra invertida \ seguida pelo caracter que você deseja inserir.
Um exemplo de uso de caracteres especiais são as aspas duplas dentro de um texto cercado por aspas duplas, provocando erro.
txt = "Somos os chamados "Vikings" do norte."
Para corrigir esse problema, usamos o caractere de escape "\"
txt = "Somos os chamados \"Vikings\" do norte."
print(txt)
São caracteres de escape usados em Python:
Código | Resultado |
---|---|
\ | Citação única |
\\ | Barra invertida |
\n | Nova Linha |
\r | Retorno de carro |
\t | Tab |
\b | Retrocesso |
\f | Feed de formulário |
\ooo | Valor octal |
\xhh | Valor hexadecimal |
Python tem um conjunto de métodos integrados que você pode usar com textos.
Nota: Todos os métodos de texto ring retornam novos valores, não alterando o texto original.
Método | Descrição |
---|---|
capitalize() | Converte o primeiro caractere para maiúscula |
casefold() | Converte texto em minúsculas |
center() | Retorna um texto centralizado |
count() | Retorna o número de vezes que um valor especificado ocorre em um texto |
encode() | Retorna uma versão codificada do texto |
endswith() | Retorna verdadeiro se o texto terminar com o valor especificado |
expandtabs() | Define o tamanho da guia do texto |
find() | Pesquisa o texto por um valor especificado e retorna a posição de onde foi encontrado |
format() | Formata valores especificados em um texto |
format_map() | Formata valores especificados em um texto |
index() | Pesquisa o texto por um valor especificado e retorna a posição de onde foi encontrado |
isalnum() | Retorna True se todos os caracteres do texto forem alfanuméricos |
isalpha() | Retorna True se todos os caracteres do texto estiverem no alfabeto |
isdecimal() | Retorna True se todos os caracteres do texto forem decimais |
isdigit() | Retorna True se todos os caracteres no texto forem dígitos |
isidentifier() | Retorna True se o texto for um identificador |
islower() | Retorna True se todos os caracteres do texto forem minúsculos |
isnumeric() | Retorna True se todos os caracteres do texto forem numéricos |
isprintable() | Retorna True se todos os caracteres do texto forem imprimíveis |
isspace() | Retorna True se todos os caracteres no texto forem espaços em branco |
istitle() | Retorna True se o texto seguir as regras de um título |
isupper() | Retorna True se todos os caracteres do texto forem maiúsculos |
join() | Junta os elementos de um iterável ao final do texto |
ljust() | Retorna uma versão justificada à esquerda do texto |
lower() | Converte um texto em letras minúsculas |
lstrip() | Retorna uma versão de corte à esquerda do texto |
maketrans() | Retorna uma tabela de tradução para ser usada nas traduções |
partition() | Retorna uma tupla onde o texto é dividida em três partes |
replace() | Retorna um texto onde um valor especificado é substituído por um valor especificado |
rfind() | Procura no texto por um valor especificado e retorna a última posição de onde foi encontrado |
rindex() | Procura no texto por um valor especificado e retorna a última posição de onde foi encontrado |
rjust() | Retorna uma versão justificada à direita do texto |
rpartition() | Retorna uma tupla onde o texto é dividida em três partes |
rsplit() | Divide o texto no separador especificado e retorna uma lista |
rstrip() | Retorna uma versão de corte à direita do texto |
split() | Divide o texto no separador especificado e retorna uma lista |
splitlines() | Divide o texto nas quebras de linha e retorna uma lista |
startswith() | Retorna verdadeiro se o texto começar com o valor especificado |
strip() | Retorna uma versão aparada do texto |
swapcase() | Troca de maiúsculas, minúsculas se tornam maiúsculas e vice-versa |
title() | Converte o primeiro caractere de cada palavra para maiúscula |
translate() | Retorna um texto traduzida |
upper() | Converte um texto em maiúscula |
zfill() | Preenche o texto com um número especificado de 0 valores no início |
Boleanos são representados pelos valores lógicos True (verdadeiro) e False (falso).
Na programação, muitas vezes necessitamos avaliar se uma expressão é verdadeira ou falsa.
Uma expressão lógica no Python obtém uma dessas duas respostas possíveis.
print(10 > 9)
print(10 == 9)
print(10 < 9)
Quando você executa uma condição em uma instrução if, o Python retorna True ou False e executa o bloco correspondente ao resultado:
a = 200
b = 33
if b > a:
print("b é maior que a")
else:
print("b é menor que a")
A função bool() permite avaliar e converter valores constantes ou de variáveis de outros tipos.
print(bool(""))
print(bool(0))
print(bool("Alô!"))
print(bool(15))
a = ""
b = 0
x = "Alô!"
y = 15
print(bool(a))
print(bool(b))
print(bool(x))
print(bool(y))
O tipo para datas não é um tipo de dado próprio do Python, mas podemos importar o módulo datetime para trabalhar com datas.
Exemplo: Importe o módulo datetime e exiba a data atual.
import datetime
#
x = datetime.datetime.now()
print(x)
A data impressa contém ano, mês, dia, hora, minuto, segundo e microssegundo.
O módulo datetime tem muitos métodos para retornar informações sobre o objeto de data.
Aqui estão alguns exemplos, você aprenderá mais sobre eles mais adiante neste capítulo.
Exemplo: Importe o módulo datetime com o alias dt e retorne o ano e o nome do dia da semana.
import datetime as dt
x = dt.datetime.now()
print(x.year)
print(x.strftime("%A"))
Para criar uma data, podemos usar o método-construtor da classe datetime() do módulo datetime.
A classe datetime() requer três parâmetros para criar uma data: dia, mês, ano.
Exemplo: Crie um objeto de data.
import datetime as dt
x = dt.datetime(2020, 5, 17)
print(x)
A classe datetime() também recebe parâmetros para hora e fuso horário (hora, minuto, segundo, microssegundo, tzone), mas eles são opcionais e têm um valor padrão de 0, ( Nonepara fuso horário).
O objeto datetime tem um método para formatar objetos de data em strings legíveis.
O método é chamado strftime() e usa um parâmetro, format, para especificar o formato da string retornada.
import datetime as dt
x = dt.datetime(2018, 6, 1)
print(x.strftime("%B"))
Diretiva | Descrição |
%a | Dia da semana, versão curta Qua |
%A | Dia da semana, versão completa quarta-feira |
%w | Dia da semana como um número 0-6, 0 é domingo 3 |
%d | Dia do mês 01-31 31 |
%b | Nome do mês, versão curta Dez |
%B | Nome do mês, versão completa Dezembro |
%m | Mês como um número 01-12 12 |
%y | Ano, versão curta, sem século 18 |
%Y | Ano, versão completa 2018 |
%H | Hora 00-23 17 |
%I | Hora 00-12 05 |
%p | AM/PM PM |
%M | Minuto 00-59 41 |
%S | Segundo 00-59 08 |
%f | Microssegundo 000000-999999 548513 |
%z | deslocamento UTC +0100 |
%Z | fuso horário CST |
%j | Número do dia do ano 001-366 365 |
%U | Número da semana do ano, domingo como o primeiro dia da semana, 00-53 52 |
%W | Número da semana do ano, segunda-feira como o primeiro dia da semana, 00-53 52 |
%c | Versão local de data e hora Seg 31 de dezembro 17:41:00 2018 |
%C | Século 20 |
%x | Versão local da data 31/12/18 |
%X | Versão local da hora 17:41:00 |
%% | Um personagem % |
%G | ISO 8601 ano 2018 |
%u | ISO 8601 dia da semana (1-7) 1 |
%V | número da semana ISO 8601 (01-53) 01 |
Coleções são sequências de itens de diferentes tipos que podem ou não estar ordenadas como são declaradas ou atribuidas, podem ou não ter itens duplicados e podem ou não serem alteradas (mutáveis ou imutáveis).
As coleções são um dos 4 tipos:
Listas são sequências mutáveis de itens ordenados, duplicados, de diferentes tipos, separados por vírgula (","), iniciadas e finalizadas com colchetes ("[" e "]").
lista = ["maçã", "banana", "cereja"]
print(lista)
Tuplas são sequências imutáveis de itens ordenados, duplicados, de diferentes tipos, separados por vírgula (","), iniciadas e finalizadas com parenteses ("(" e ")").
tupla = ("maçã", "banana", "cereja")
print(tupla)
Conjuntos são sequências imutáveis de itens desordenados de diferentes tipos, separados por vírgula (","), iniciadas e finalizadas com chaves ("{" e "}").
conjunto = {"maçã", "banana", "cereja"}
print(conjunto)
Os dicionários são sequências mutáveis de itens ordenados com pares de nomes e valores separados por dois-pontos (":"), sendo os nomes do tipo-texto e os valores de diferentes tipos, separados por vírgula (",").
dicionario = {
"fruta1": {"nome": "maçã","codigo": 1},
"fruta2": {"nome": "banana","codigo": 2},
"fruta3": {"nome": "cereja","codigo": 3}
}
print(dicionario)
As listas são coleções alteráveis de itens entre colchetes (iniciadas com "[" e finalizadas com "]"), separados por vírgula (","), ordenados e duplicados.
lista = ["maçã", "banana", "cereja"]
print(lista)
A lista tem um conjunto de métodos integrados que você pode usar em listas.
Método | Descrição |
---|---|
append() | Adiciona um elemento no final da lista |
clear() | Remove todos os elementos da lista |
copy() | Retorna uma cópia da lista |
count() | Retorna o número de elementos com o valor especificado |
extend() | Adiciona os elementos de uma lista (ou qualquer iterável), ao final da lista atual |
index() | Retorna o índice do primeiro elemento com o valor especificado |
insert() | Adiciona um elemento na posição especificada |
pop() | Remove o elemento na posição especificada |
remove() | Remove o item com o valor especificado |
reverse() | Inverte a ordem da lista |
sort() | Classifica a lista |
Os itens da lista são objetos de valores de diferentes tipos, ordenados de acordo como são declarados na lista e que podem ser duplicados, contendo métodos que permitem a sua manipulação.
No Python as listas são objetos com o tipo de dados 'list'.
lista = ["maçã", "banana", "cereja"]
print(type(lista))
Os itens da lista podem ser de qualquer tipo de dados.
lista1 = ["maçã", "banana", "cereja"] # itens do tipo de dados 'str'
lista2 = [1, 5, 7, 9, 3] # itens do tipo de dados 'int'
lista3 = [True, False, False] # itens do tipo de dados 'bool'
Uma lista pode conter diferentes tipos de dados.
lista = ["abc", 34, 40.25, 3+2j, True] # itens dos tipos de dados 'str', 'int', 'float', 'complex', 'bool'
Também é possível usar o construtor list() ao criar uma nova lista.
lista = list(("maçã", "banana", "cereja"))
# note os parenteses duplos na utilização do construtor
print(lista)
O método len() retorna o tamanho da lista.
lista = ["maçã", "banana", "cereja"]
tamanho = len("lista")
print(tamanho)
Os itens da lista são ordenados, ou seja, estão na ordem definida na declaração da lista, ou da inserção de novos items após a atribuição inicial de valores.
Itens são adicionado a uma lista posicionados no seu final.
Nota: alguns métodos de lista alteram a ordenação, mas em geral a ordem dos itens não é alterada.
Os itens da lista são indexados, do índice inicial igual a zero e índice final igual ao tamanho da lista menos um.
lista = ["maçã", "banana", "cereja"]
tamanho = len(lista)
print("Tamanho =",tamanho)
for indice in range(tamanho):
print("índice =", indice, "item =", lista[indice])
Indexação negativa significa começar do fim: -1 refere-se ao último item, -2 refere-se ao penúltimo item etc.
lista = ["maçã", "banana", "cereja"]
print(lista[-1])
Você pode especificar um intervalo de índices especificando onde começar e onde terminar o intervalo.
Ao especificar um intervalo, o valor de retorno será uma nova lista com os itens especificados.
Retorne o terceiro, quarto e quinto item.
lista = ["maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga"]
print(lista[2:5])
Nota: A pesquisa começará no índice 2 (incluído) e terminará no índice 5 (não incluído).
Lembre-se que o primeiro item tem índice 0.
Ao deixar de fora o valor inicial, o intervalo começará no primeiro item:
lista = ["maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga"]
print(lista[:4])
Ao deixar de fora o valor final, a faixa será do valor inicial até o final da lista.
lista = ["maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga"]
print(lista[2:])
Para alterar o valor de um item específico, consulte o número do índice:
lista = ["maçã", "banana", "cereja"]
lista[1] = "pera"
print(lista)
A lista é mutável, o que significa que podemos alterar, adicionar e remover itens em uma lista após ela ter sido criada.
Como as listas são indexadas, as listas podem ter itens com o mesmo valor.
lista = ["maçã", "banana", "cereja", "maçã", "cereja"]
print(lista)
Para alterar o valor dos itens dentro de um intervalo específico, defina uma lista com os novos valores e consulte o intervalo de números de índice onde deseja inserir os novos valores.
Altere os valores "banana" e "cereja" pelos valores "pera" e "mamão".
lista = ["maçã", "banana", "cereja", "laranja", "kiwi", "manga"]
lista[1:3] = ["pera", "mamão"]
print(lista)
Se você inserir mais itens do que substituir, os novos itens serão inseridos onde você especificou e os itens restantes serão movidos de acordo:
Exemplo: alteção do segundo valor sendo substituindo por dois novos valores.
lista = ["maçã", "banana", "cereja"]
lista[1:2] = ["pera", "mamão"]
print(lista)
Nota: O comprimento da lista mudará quando o número de itens inseridos não corresponder ao número de itens substituídos.
Se você inserir menos itens do que substituir, os novos itens serão inseridos onde você especificou e os itens restantes serão movidos de acordo:
Altere o segundo e o terceiro valor substituindo-o por um valor:
lista = ["maçã", "banana", "cereja"]
lista[1:3] = ["mamão"]
print(lista)
Para adicionar um item ao final da lista, use o método append().
lista = ["maçã", "banana", "frutas"]
lista.append("laranja")
print(lista)
Para inserir um item de lista em um índice especificado, use o insert()método.
O método insert() insere um item no índice especificado.
Exemplo: inserção de um item na segunda posição.
lista = ["maçã", "banana", "frutas"]
lista.insert(1, "laranja")
print(lista)
Remover item especificado
O método remove() exclui o item especificado.
lista = ["maçã", "banana", "frutas"]
lista.remove("banana")
print(lista)
O método pop() remove o índice especificado.
Exemplo: remoção do segundo item.
lista = ["maçã", "banana", "frutas"]
lista.pop(1)
print(lista)
Se você não especificar o índice, o pop()método removerá o último item.
Exemplo: remoção do último item.
lista = ["maçã", "banana", "frutas"]
lista.pop()
print(lista)
A palavra-chave del também remove o índice especificado.
Exemplo: remoção do primeiro item.
lista = ["maçã", "banana", "frutas"]
del lista[0]
print(lista)
A palavra-chave del também pode excluir a lista completamente.
lista = ["maçã", "banana", "frutas"]
del lista
O método clear() esvazia a lista.
A lista ainda permanece sem conteúdo.
lista = ["maçã", "banana", "frutas"]
lista.clear()
print(lista)
Os laços de uma lista podem ser realizados através de iterações ou indexação.
As iterações de lista são realizadas com a instrução for/in:
lista = ["maçã", "banana", "frutas"]
for x in lista: print(x)
Os laços indexados de lista são realizados com o acesso aos itens pelo seu índice, com a utilizaação dos métodos len(), da lista, e range().
lista = ["maçã", "banana", "frutas"]
for i in range(len(lista)): print(lista[i])
A compreensão de lista oferece uma sintaxe curta para criação uma nova lista com os itens filtrados de acordo com algum critério sobre seu valor.
Consideremos criar uma nova lista a partir de lista de frutas, com os itens com a letra "a" no nome da fruta.
Sem compreensão de lista:
frutas = ["maçã", "banana", "frutas", "kiwi", "manga"]
nova_lista = []
for x in frutas:
if "a" in x:
nova_lista.append(x)
print(nova_lista)
Com compreensão de lista:
frutas = ["maçã", "banana", "frutas", "kiwi", "manga"]
nova_lista = [x for x in frutas if "a" in x]
print(nova_lista)
O método sort() dos objetos de listas reordena a lista em ordem crescente ou decrescente, de acordo com os critérios de avaliação dos valores de diferentes tipos.
Para classificar de forma decrescente, use o argumento "reverse = True":
print('--> listas originais')
lista_alfa = ["laranja", "manga", "kiwi", "abacaxi", "banana"]
lista_num = [100, 50, 65, 82, 23]
print(lista_alfa)
print(lista_num)
print('--> listas ordenadas')
lista_alfa.sort()
lista_num.sort()
print(lista_alfa)
print(lista_num)
print('--> listas com ordenação reversa')
lista_alfa.sort(reverse = True)
lista_num.sort(reverse = True)
print(lista_alfa)
print(lista_num)
Uma lista não é copiada com a declaração lista2 = lista1, pois lista2 apenas apontará para o objeto na memória de lista1, e as alterações feitas em lista1 serão refletidas em lista2.
Existem diferentes maneiras para copiar de uma listas:
frutas = ["maçã", "banana", "frutas"]
mesma_lista = frutas
nova_lista_1 = frutas.copy()
nova_lista_2 = list(frutas)
nova_lista_3 = [x for x in frutas]
print(mesma_lista, mesma_lista == frutas)
print(nova_lista_1, nova_lista_1 == frutas)
print(nova_lista_2, nova_lista_2 == frutas)
print(nova_lista_3, nova_lista_3 == frutas)
Existem diferentes maneiras de concatenar uma lista ou mais listas em outra, ou em uma nova lista.
lista_1 = ["a", "b", "c"]
lista_2 = [1, 2, 3]
copia_1_lista_1 = lista_1.copy()
copia_2_lista_1 = lista_1.copy()
#
lista_3 = lista_1 + lista_2
copia_1_lista_1.extend(lista_2)
for x in lista_2:
copia_2_lista_1.append(x)
#
print("lista_1 =", lista_1)
print("lista_2 =", lista_2)
print("lista_3 =", lista_3)
print("copia_l_1ista_1 =", copia_1_lista_1)
print("copia_2_lista_1 =", copia_2_lista_1)
As tuplas são coleções imutáveis (não alteráveis) de itens entre parenteses (iniciadas com "(" e finalizadas com ")"), separados por vírgula (","), ordenados e únicos.
tupla = ("maçã", "banana", "cereja")
print(tupla)
Python tem dois métodos integrados integrados nos objetos das tuplas.
Método | Descrição |
---|---|
count() | Retorna o número de vezes que um valor especificado ocorre em uma tupla |
index() | Procura na tupla um valor especificado e retorna a posição de onde foi encontrado |
Os itens de tupla são ordenados, imutáveis, indexados (o primeiro item possui índice [0], o segundo item possui índice [1] etc) e permitem valores duplicados.
Quando dizemos que as tuplas estão ordenadas, significa que os itens têm uma ordem definida, e essa ordem não será alterada, será exatamente a mesma como os itens foram declarados na(s) intrução(ões).
As tuplas são imutáveis, o que significa que não podemos alterar, adicionar ou remover itens após a criação da tupla.
As tuplas são indexadas e podem ter itens duplicados, com o mesmo valor.
tupla = ("maçã", "banana", "cereja", "maçã", "cereja")
print(tupla)
Você pode acessar os itens da tupla consultando o número do índice, entre colchetes.
tupla = ("maçã", "banana", "cereja")
print(tupla[1])
# impressão do segundo item na tupla
Nota: O primeiro item tem índice 0.
Indexação negativa é feita do sentido do último item em direção ao primeiro, com o índice -1 referindo-se ao último item, -2 referindoe-se ao penúltimo, e assim por diante.
Exemplo: impressão do último item da tupla.
tupla = ("maçã", "banana", "cereja")
print(tupla[-1])
Você pode especificar um intervalo de índices especificando onde começar e onde terminar o intervalo.
Ao especificar um intervalo, o valor de retorno será uma nova tupla com os itens especificados.
Exemplo: retornar o terceiro, quarto e quinto item.
tupla = ("maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga")
print(tupla[2:5])
Nota: A pesquisa começará no índice 2 (incluído) e terminará no índice 5 (não incluído).
O primeiro item tem índice 0.
Ao deixar de fora o valor inicial, o intervalo começará no primeiro item.
Exemplo: itens do primeiro item ao item do índice 3 (4-1).
tupla = ("maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga")
print(tupla[:4])
Se o valor final for omitido o intervalo será até o final da lista.
Exemplo: itens do terceiro índice ao último item.
tupla = ("maçã", "banana", "cereja", "laranja", "kiwi", "melão", "manga")
print(tupla[2:])
A tupla é imutável, o que significa que pode ser alterada, e itens não podem ser adicionados ou removidos após sua criação.
Mas existem algumas soluções alternativas.
Depois que uma tupla é declarada, não pode ser alterada, pois são imutáveis.
Embora não seja adequado o uso de uma tupla havendo a necessidade de ser alterada, pode-se o metodo alternativo de convertê-la em uma lista, alterando-se a lista para convertê-la novamente como tupla.
tupla = ("maçã", "banana", "cereja")
lista = list(tupla)
lista[1] = "kiwi"
tupla = tuple(lista)
print(tupla)
Como as tuplas são imutáveis, elas não possuem um método append() embutido, mas existem outras maneiras de adicionar itens a uma tupla.
1. Converter em uma lista : Assim como a solução alternativa para alterar uma tupla, você pode convertê-la em uma lista, adicionar seu(s) item(ns) e convertê-la novamente em uma tupla.
tupla = ("maçã", "banana", "cereja")
lista = list(tupla) # converta a tupla em uma lista
lista.append("laranja") # adicione "laranja"
tupla = tuple(lista) # converta novamente em uma tupla
print(tupla)
2. Adicionar tupla a uma tupla. Você tem permissão para adicionar tuplas a tuplas, portanto, se você quiser adicionar um item (ou muitos), crie uma nova tupla com o(s) item(ns) e adicione-a à tupla existente.
# criação de tupla
tupla1 = ("maçã", "banana", "cereja")
# criação de nova tupla
tupla2 = ("laranja",)
# adição de tuplas
tupla1 += tupla2
print(tupla1)
Nota: Ao criar uma tupla com apenas um item, lembre-se de incluir uma vírgula após o item, caso contrário o não será identificado como uma tupla.
Itens não podem ser removidos de uma tupla.
As tuplas não podem ser alteradas, portanto, seus itens não podem ser removidos.
O método alternativo com listas permite a remoção de itens de uma tupla.
tupla = ("maçã", "banana", "cereja")
lista = list(tupla) # conversão de tupla em lista
lista.remove("maçã") # remoção do item "maçã"
tupla = tuple(lista) # conversão da lista em tupla
print(tupla)
Tupla podem ser completamente removidas com a instrução del.
tupla = ("maçã", "banana", "cereja")
del tupla
print(tupla) # isso gerará um erro porque a tupla não existe mais
É chamado "empacotar" uma tupla a atribuição valores.
frutas = ("maçã", "banana", "cereja") # empacotamento
print(frutas)
É chamado "descompactar" extrair da tupla para variáveis.
frutas = ("maçã", "banana", "cereja") # empacotamento
(verde, amarelo, vermelho) = frutas # desempacotamento
print(verde)
print(amarelo)
print(vermelho)
Você pode iterar (percorrer) os itens da tupla usando um laço (loop) for.
tupla = ("maçã", "banana", "cereja")
for x in tupla: print(x)
Você também pode percorrer os itens da tupla consultando seu número de índice.
Use as funções range() e len() para criar um iterável adequado com índices.
tupla = ("maçã", "banana", "cereja")
for i in range(len(tupla)):
print(tupla[i])
Para juntar duas ou mais tuplas você pode usar operador "+".
tupla1 = ("a", "b" , "c")
tupla2 = (1, 2, 3)
tupla3 = tupla1 + tupla2
print(tupla3)
Se você quiser multiplicar o conteúdo de uma tupla um determinado número de vezes, você pode usar o operador "*":
Exemplo: multiplique da tupla de frutas por 2.
frutas = ("maçã", "banana", "cereja")
tupla = frutas * 2
print(tupla)
Os conjuntos são usados para armazenar vários itens em uma única variável.
conjunto = {"maçã", "banana", "cereja"}
Conjunto é um dos 4 tipos de dados internos do Python usados para armazenar coleções de dados, os outros 3 são os tipos de dados list, tuple e dictionary, todos com qualidades e usos diferentes.
Um conjunto é uma coleção imutável e não indexada de itens não ordenados.
Nota: Os itens definidos não podem ser alterados, mas você pode remover itens e adicionar novos itens.
Os conjuntos são escritos com colchetes.
conjunto = {"maçã", "banana", "cereja"}
print(conjunto)
Observação: os conjuntos não são ordenados, portanto, você não pode ter certeza em qual ordem os itens aparecerão.
Os itens do conjunto não são ordenados, não podem ser alterados e não permitem valores duplicados.
Não ordenado significa que os itens em um conjunto não têm uma ordem definida.
Os itens do conjunto podem aparecer em uma ordem diferente toda vez que você os usa e não podem ser referenciados por índice ou chave.
Os itens do conjunto são imutáveis, o que significa que não podemos alterar os itens após a criação do conjunto.
Depois que um conjunto é criado, você não pode alterar seus itens, mas pode remover itens e adicionar novos itens.
Os valores dos itens não podem ser repetidos.
conjunto = {"maçã", "banana", "cereja", "maçã"}
print(conjunto)
Os itens de um conjunto não são acessados com índices ou chaves, mas pode ser percorridos com o laço for loop.
conjunto = {"maçã", "banana", "cereja"}
for x in conjunto: print(x)
A palavra-chave in permite verificar a presenção de itens com determinado valor.
conjunto = {"maçã", "banana", "cereja"}
print("banana" in conjunto)
Após a criação os itens dos conjuntos não podem ser alterados mas novos itens poderão ser adicionados ao conjunto.
Depois que um conjunto é criado, você não pode alterar seus itens, mas pode adicionar novos itens.
Para adicionar um item a um conjunto, use o método add().
conjunto = {"maçã", "banana", "cereja"}
conjunto.add("laranja")
print(conjunto)
Para adicionar itens de outro conjunto ao conjunto atual, use o método update().
conjunto = {"maçã", "banana", "cereja"}
tropical = {"abacaxi", "manga", "mamão"}
conjunto.update(tropical)
print(conjunto)
O objeto no método update() não precisa ser um conjunto, pode ser qualquer objeto iterável (tuplas, listas, dicionários etc.).
conjunto = {"maçã", "banana", "cereja"}
lista = ["kiwi", "laranja"]
conjunto.update(lista)
print(conjunto)
Itens em um conjunto podem ser removidos com os método remove() e discard()
conjunto = {"maçã", "banana", "cereja"}
conjunto.remove("banana")
print(conjunto)
Nota: Se o item a ser removido não existir, o método remove() irá gerar um erro.
conjunto = {"maçã", "banana", "cereja"}
conjunto.discard("banana")
print(conjunto)
Nota: Se o item a ser removido não existir, o método discard() irá gerar um erro.
Você também pode usar o método pop() para remover o último item do conjunto.
Lembre-se de que os conjuntos não são ordenados, então você não saberá qual item será removido.
O valor de retorno do método pop() é o item removido.
conjunto = {"maçã", "banana", "cereja"}
print(conjunto)
ultimo = conjunto.pop()
print(ultimo)
print(conjunto)
Nota: Os conjuntos não são ordenados, portanto, ao usar o pop()método, você não sabe qual item será removido.
O método clear() esvazia o conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto.clear()
print(conjunto)
A palavra-chave del excluirá o conjunto completamente.
conjunto = {"maçã", "banana", "cereja"}
del conjunto
print(conjunto)
Os itens de um conjunto são percorridos com laços (loops) for.
conjunto = {"maçã", "banana", "cereja"}
for x in conjunto: print(x)
Conjuntos podem ser unidos de diferentes maneiras.
O método union() retorna um novo conjunto contendo todos os itens de ambos os conjuntos.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj3 = conj1.union(conj2)
print(conj3)
O método update() insere os itens de um conjunto em outro.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj1.update(conj2)
print(conj1)
Python tem um conjunto de métodos integrados que você pode usar em conjuntos.
Método | Descrição |
---|---|
add() | Adiciona um elemento ao conjunto |
clear() | Remove todos os elementos do conjunto |
copy() | Retorna uma cópia do conjunto |
difference() | Retorna um conjunto contendo a diferença entre dois ou mais conjuntos |
difference_update() | Remove os itens neste conjunto que também estão incluídos em outro conjunto especificado |
discard() | Remove o item especificado |
intersection() | Retorna um conjunto, que é a interseção de dois outros conjuntos |
intersection_update() | Remove os itens neste conjunto que não estão presentes em outro(s) conjunto(s) especificado(s) |
isdisjoint() | Retorna se dois conjuntos têm uma interseção ou não |
issubset() | Retorna se outro conjunto contém este conjunto ou não |
issuperset() | Retorna se este conjunto contém outro conjunto ou não |
pop() | Remove um elemento do conjunto |
remove() | Remove o elemento especificado |
symmetric_difference() | Retorna um conjunto com as diferenças simétricas de dois conjuntos |
symmetric_difference_update() | insere as diferenças simétricas deste conjunto e de outro |
union() | Retorna um conjunto contendo a união de conjuntos |
update() | Atualize o conjunto com a união deste conjunto e outros |
Os dicionários são usados para armazenar valores de dados em pares chave:valor.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
print(dicionario)
Um dicionário é uma coleção ordenada, mutável e que não permite duplicação de dados.
A partir da versão 3.7 do Python, os dicionários são ordenados. No Python 3.6 e anteriores, os dicionários não são ordenados.
Os dicionários são escritos com colchetes e possuem chaves e valores.
Python tem um conjunto de métodos integrados usados com dicionários.
Método | Descrição |
---|---|
clear() | Remove todos os elementos do dicionário |
copy() | Retorna uma cópia do dicionário |
fromkeys() | Retorna um dicionário com as chaves e o valor especificados |
get() | Retorna o valor da chave especificada |
items() | Retorna uma lista contendo uma tupla para cada par chave-valor |
keys() | Retorna uma lista contendo as chaves do dicionário |
pop() | Remove o elemento com a chave especificada |
popitem() | Remove o último par chave-valor inserido |
setdefault() | Retorna o valor da chave especificada. Se a chave não existir: insira a chave, com o valor especificado |
update() | Atualiza o dicionário com os pares de valores-chave especificados |
values() | Retorna uma lista de todos os valores no dicionário |
Os itens do dicionário são apresentados em pares chave:valor e podem ser referenciados pelo nome da chave; são ordenados, alteráveis e não permitem duplicação das chaves.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
print(dicionario["marca"])
A partir da versão 3.7 do Python, os dicionários são ordenados. No Python 3.6 e anteriores, os dicionários não são ordenados.
Quando dizemos que os dicionários estão ordenados, significa que os itens têm uma ordem definida, e essa ordem não será alterada, será mantida como foi declarada.
Não ordenado significa que os itens não têm uma ordem definida, você não pode fazer referência a um item usando um índice.
Os dicionários são mutáveis, o que significa que podemos alterar, adicionar ou remover itens após a criação do dicionário.
Os dicionários não podem ter dois itens com a mesma chave. Uma declaração duplicada não causa erro entretanto a duplicação é ignorada.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964,
"ano": 2020
}
print(dicionario)
Você pode acessar os itens de um dicionário consultando o nome da chave, entre colchetes, ou usando o método get().
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
item1 = dicionario["modelo"]
item2 = dicionario.get("modelo")
print(item1)
print(item2)
O método keys() retorna a lista de todas as chaves do dicionário.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
print(dicionario.keys())
A lista de chaves é uma visualização do dicionário, o que significa que quaisquer alterações feitas no dicionário serão refletidas na lista de chaves.
carro = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
item1 = carro.keys()
print(item1) # antes
carro["cor"] = "branco"
print(item1) # depois
Você pode alterar o valor de um item específico pelo nome da chave. Se o item não existir, o item será adicionado.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
print(dicionario)
dicionario["ano"] = 2018
dicionario["cor"] = "vermelho"
print(dicionario)
O método update() atualizará o dicionário com os itens de um determinado argumento. Se o item não existir, o item será adicionado.
O argumento deve ser um dicionário ou um objeto iterável com pares chave:valor.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
dicionario.update({"ano": 1963})
dicionario.update({"cor": "vermelho"})
print(dicionario)
Existem vários métodos para remover itens de um dicionário
O método pop() remove o item com o nome de chave especificado.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
dicionario.pop("modelo")
print(dicionario)
O método popitem() remove o último item inserido.
Nas versões anteriores à 3.7, um item aleatório é removido.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
dicionario.popitem()
print(dicionario)
A palavra-chave del remove o item com o nome de chave especificado.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
del dicionario["modelo"]
print(dicionario)
A instrução del pode excluir completamente o dicionário.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
del dicionario
print(dicionario) # erro: dicionario não existe mais.
O método clear() remove todos os itens de um dicionário sem apagar a referência à variável.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
dicionario.clear()
print(dicionario)
Os dicionários são iteradores e podem ser percorridos com o laço for.
Ao percorrer um dicionário, o valor de retorno são as chaves do dicionário, mas também existem métodos para retornar os valores.
Os nomes das chave no dicionário são retornados como abaixo.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
for x in dicionario: print(x)
Os valores das chaves no dicionário são retornados como abaixo.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
for x in dicionario: print(dicionario[x])
O método values() retorna valores de um dicionário.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
for x in dicionario.values(): print(x)
O método keys() retorna as chaves de um dicionário:
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
for x in dicionario.keys(): print(x)
o método items() retorna todos os itens de pares com chaves e valores de um dicionário.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
for x, y in dicionario.items(): print(x, y)
Você não pode copiar um dicionário simplesmente com a instrução dict2 = dict1, porque dict2 apenas apontará para o objeto de dict1, e as alterações feitas em dict1 serão refletidas em dict2.
Existem maneiras de fazer uma cópia, uma delas é usar o método copy() do dicionário.
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
copia = dicionario.copy()
print(copia)
O dicionário também pode ser copiado com o método dict().
dicionario = {
"marca": "Ford",
"modelo": "Mustang",
"ano": 1964
}
mydict = dict(dicionario)
print(mydict)
Um dicionário pode conter dicionários internamente, isso é chamado de dicionários aninhados ou aninhamento de dicionários.
No exemplo abaixo 3 dicionários são incluidos internamen no dicionário "familia".
familia = {
"child1" : {
"name" : "Emil",
"ano" : 2004
},
"child2" : {
"name" : "Tobias",
"ano" : 2007
},
"child3" : {
"name" : "Linus",
"ano" : 2011
}
}
print(familia)
No exemplo abaixo 3 dicionários são atribuidos a 3 variáveis incluidas no dicionário "familia".
filho1 = {
"name" : "Emil",
"ano" : 2004
}
filho2 = {
"name" : "Tobias",
"ano" : 2007
}
filho3 = {
"name" : "Linus",
"ano" : 2011
}
familia = {
"filho1" : filho1,
"filho2" : filho2,
"filho3" : filho3
}
print(familia)
Os valores de dados no Python são objetos com métodos construtores que podem ser utilizados para a conversão de tipos dos dados.
Este métodos construtores podem ser utilizados de forma independente para a conversão, como na tabela abaixo.
Método construtor | |
---|---|
int() | retorna um um número inteiro a partir de um valor inteiro, um valor real (removendo os decimais) ou um texto que represente um valor numérico. |
float() | retorna um um número real a partir de um valor inteiro, um valor real ou um texto represente um float ou um texto que represente valor numérico. |
str() | retorna um texto a partir de uma ampla variedade de tipos de dados, incluindo textos e valores numéricos. |
bool() | retorna um valor lógico a partir de uma ampla variedade de tipos de dados, incluindo textos e valores numéricos. |
Exemplo: conversão para inteiros.
x = int(1) # x será 1
y = int(2.8) # y será 2
z = int("3") # z será 3
Exemplo: conversão para números reais.
x = float(1) # x será 1.0
y = float(2.8) # y será 2.8
z = float("3") # z será 3.0
w = float("4.2") # w será 4.2
Exemplo: conversão para Texto.
x = str("s1") # x será 's1'
y = str(2) # y será '2'
z = str(3.0) # z será '3.0'