As classes são estruturas contendo atributos (ou propriedades) e métodos, de objetos instanciados na memória, combinando dados com código próprios, encapsulados juntos e separados de outros objetos.
As variáveis pertencentes às classes são referidas como atributos, e as funções como métodos.
Todos os dados no Python são objetos de uma determinada classe, com atributos e métodos próprios, instanciados na memória, chamados de atributos de instância e métodos de instância, respectivamente.
Um objeto é uma instância de uma classe, ocupando um espaço da memória para armazenar seus próprios atributos, enquanto executa os métodos da classe de forma compartilhada com outros objetos da mesma classe.
Os objetos das classes disponíveis, após instanciadas, precisam ser referênciadas de alguma forma, e por isso podem ser atribuidas a variáveis para utilização futura.
Variáveis são apontadores para objetos de dados armazenados na memória pelo Python.
Um objeto, ao ser instanciado, retorna o apontamento para o objeto na memória.
Todos os dados do Python são objetos, mesmo os unitários.
Ao ser atribuido um valor a uma variável, a variável aponta para esse objeto, tornando o objeto reutilizável.
a = 1
b = True
c = "ABC"
print(a,b,c)
Nos exemplos acima, a, b e c são variáveis. Cada endereço de objeto dos literais numérico, texto e booleano usados e instanciados na memória foi atribuidos na respectiva variável.
Literais são valores diretos de diferentes tipos de dados.
Por exemplo 1 é um literal inteiro do tipo int; 1.1 e um literal real do tipo float; True é um literal booleano do tipo bool; e "ABC" é um literal texto do tipo str.
Os literais numéricos, texto e booleanos são objetos do tipo int, str e bool respectivamente.
Quando recursos são pertencentes ao escopo do Python, como palavras-reservadas, determinadas classes pré-existentes como os tipos de dados numéricos, literais etc, ou funções e diretivas, dentre outros recursos, são classificados como recursos nativos.
Entre os recursos nativos do Python, já encontram-se os tipos de dados primitivos, que são os tipos de dados numéricos, textos, booleanos (lógicos) e datas.
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(f"x = 1; type(x): {type(x)}")
print(f"y = 2.8; type(y): {type(y)}")
print(f"z = 1j; type(z): {type(z)}")
O tipo int é um número inteiro, positivo ou negativo, sem decimais, de comprimento ilimitado.
x = 1
y = 35656222554887711
z = -3255522
print(f"x = 1; type(x): {type(x)}")
print(f"y = 35656222554887711; type(y): {type(y)}")
print(f"z = -3255522; type(z): {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(f"x = 1.10; type(x): {type(x)}")
print(f"y = 1.0; type(y): {type(y)}")
print(f"z = -35.59; type(z): {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(f"x = 35e3; type(x): {type(x)}")
print(f"y = 12E4; type(y): {type(y)}")
print(f"z = -87.7e100; type(z): {type(z)}")
Os números complexos são escritos com "j" na parte imaginária.
x = 3+5j
y = 5j
z = -5j
print(f"x = 3+5j; type(x): {type(x)}")
print(f"y = 5j; type(y): {type(y)}")
print(f"z = -5j; type(z): {type(z)}")
Valores numéricos podem ter o tipo convertido para outro com os métodos int(), float() e complex()
Conversão de número inteiro para outro tipo numérico:
print(f"type(float(1)) = {type(float(1))}")
print(f"type(complex(1)) = {type(complex(1))}")
print(f"type(int(2.8)) = {type(int(2.8))}")
print(f"type(complex(2.8)) = {type(complex(2.8))}")
Números complexos não podem ser convertidos para outro tipo de número.
try:
print(f"type(int(1+2j)) = {type(int(1+2j))}")
except:
print("Erro ao tentar converter int(1+2j)!")
try:
print(f"type(float(1+2j)) = {type(float(1+2j))}")
except:
print("Erro ao tentar converter float(1+2j)!")
Conversão de um número para tipo texto:
print(f"type(str(1)) = {type(str(1))}")
print(f"type(str(2.8)) = {type(str(2.8))}")
print(f"type(str(1+2j)) = {type(str(1+2j))}")
Conversão do tipo texto para tipos numéricos:
print(f"type(int('1')) = {type(int('1'))}")
print(f"type(float('2.8')) = {type(float('2.8'))}")
print(f"type(complex('1+2j')) = {type(complex('1+2j'))}")
Python não tem uma função para gerar números aleatórios, mas tem o pacote nativo random.
import random
# número aleatório entre 1 e 9
print(random.randrange(1, 10))
O tipo texto (do inglês string) são cadeias de caracteres declaradas entre aspas simples ou aspas duplas.
O conteúdo do texto 'olá' é o mesmo de "olá", pois é constituido pelos caracteres entre as aspas simples ou duplas, que servem apenas para delimitar o texto.
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 = "Texto iniciado com aspa dupla e encerrado com aspa simples causa erro sintático!'
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 direita para esquerda, da posição -5 (incluída) até a posição -2 (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 formatados 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 ordem 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 = 60
txt = "Tenho " + idade + " anos"
Combinamos textos e números utilizados como argumentos do método format() de um texto.
nome ="Roberto"
idade = 60
txt = "Meu nome é {} e tenho {} anos."
print(txt.format(nome,idade))
Podemos usar o atalho de formatação de textos iniciados com a letra "f" e colocando as variáveis entre chaves.
nome ="Roberto"
idade = 60
txt = f"Meu nome é {nome} e tenho {idade} anos."
print(txt)
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 númros decimais, de 0 a 9. |
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. |
Exemplos dos métodos de texto da classe str.
capitalize(): Converte o primeiro caractere do texto para maiúscula.
print("alô, mundo!".capitalize())
casefold(): Converte o texto em minúsculas.
print("Alô, Mundo!".casefold())
center(): Centraliza o texto.
a = "Alô, mundo!"
print("|{}|".format(a.center(50)))
count(): Retorna o número de ocorrencias de um valor especificado.
print("Temos quantas letras 'e' nessa frase?".count("e"))
print("Alô, mundo".count("o"))
encode(): Retorna o texto em bytes.
print("Alô, mundo!".encode())
endswith(): Retorna verdadeiro se o texto terminar com o valor especificado.
a = "Alô, mundo!"
print(a.endswith("o"))
print(a.endswith("!"))
expandtabs(): Substitui o tab por um número especificado de espaços.
print("Alô,\tmundo!".expandtabs(20))
find(): Procura no texto por um valor especificado e retorna a posição de onde foi encontrado.
a = "Alô, mundo!"
print(a.find("ô"))
print(a.find("o"))
format(): Formata um texto com valores.
print("Alô, {}, este é o mundo!".format("Roberto"))
index(): Procura no texto por um valor especificado e retorna a posição de onde foi encontrado.
print("Alô, mundo!".index("o"))
isalnum(): Retorna verdadeiro se o texto contém apenas letras ou números.
print("abc".isalnum())
print("123".isalnum())
print("abc123".isalnum())
print("abc 123".isalnum())
isalpha(): Retorna verdadeiro se o texto contém apenas letras.
print("abc".isalpha())
print("ABC".isalpha())
print("123".isalpha())
print("abc123".isalpha())
isdecimal(): Retorna verdadeiro se o texto contém apenas números decimais, de 0 a 9, sem pontos, virgulas ou sublinhados.
print("abc".isdecimal())
print("123".isdecimal())
print("123.".isdecimal())
print("123.1".isdecimal())
isdigit(): Retorna verdadeiro se o texto contém apenas números.
print("abc".isdigit())
print("123".isdigit())
print("123.".isdigit())
print("123.1".isdigit())
isidentifier(): Retorna verdadeiro se o texto contém apenas letras, números e sublinhados.
print("a_A_1".isidentifier())
print("a _A_ 1".isidentifier())
islower(): Retorna verdadeiro se o texto contém apenas letras minúsculas.
print("ALÔ, MUNDO!".islower())
print("Alô, mundo!".islower())
print("alô, mundo!".islower())
isnumeric(): Retorna verdadeiro se o texto contém apenas números.
print("123".isnumeric())
print("123.".isnumeric())
print("123.3".isnumeric())
print("abc123".isnumeric())
isspace(): Retorna verdadeiro se o texto contém apenas espaços.
print("Alô, mundo!".isspace())
print(" ".isspace())
istitle(): Retorna verdadeiro se o texto contém apenas palavras com primeira letra maiúscula.
print("Alô, mundo!".istitle())
print("Alô, Mundo!".istitle())
isupper(): Retorna verdadeiro se o texto contém apenas letras maiúsculas.
print("Alô, mundo!".isupper())
print("ALÔ, MUNDO!".isupper())
join(): Junta os textos de uma coleção com o texto especificado.
print(",".join(["1","2","3"]))
ljust(): Justifica o texto à esquerda dentro do espaço especificado.
print(f"|{'Alô, mundo.'.ljust(50)}|")
lower(): Converte o texto em minúsculas.
print("ALÔ, MUNDO!".lower())
lstrip(): Remove os espaços no início do texto.
a = " Alô, mundo! "
print("|{}|".format(a))
print("|{}|".format(a.lstrip()))
partition(): Divide o texto em tupla de trechos a partir da primeira ocorrência do valor especificado, da esquerda para a direita.
print("123.456.789".partition("."))
replace(): Substitui um valor por outro.
print("Alô, mundo!".replace("mundo", "Brasil"))
rfind(): Procura no texto por um valor especificado e retorna a posição de onde foi encontrado.
print("Alô, mundo!".rfind("o"))
rindex(): Procura no texto por um valor especificado e retorna a posição de onde foi encontrado.
print("Alô, mundo!".rindex("o"))
rjust(): Justifica o texto à direita dentro do espaço especificado.
print(f"|{'Alô, mundo.'.rjust(50)}|")
rpartition(): Divide o texto em tupla de trechos a partir da primeira ocorrência do valor especificado, da direita para a esquerda.
print("123.456.789".rpartition("."))
rstrip(): Remove os espaços no final do texto.
a = " Alô, mundo! "
print("|{}|".format(a))
print("|{}|".format(a.rstrip()))
split(): Divide o texto em uma lista.
print("0,1,2,3,4,5,6,7,8,9".split(","))
splitlines(): Divide o texto contendo o caracter de escape de quebra de linha (\n) em uma lista de linhas.
print("Linha 1\nLinha 2\nLinha 3".splitlines())
startswith(): Retorna verdadeiro se o texto comecar com o valor especificado.
print("Alô, mundo!".startswith("A"))
print("Alô, mundo!".startswith("a"))
strip(): Remove os espaços no início e no final do texto.
a = " Alô, mundo! "
print("|{}|".format(a))
print("|{}|".format(a.strip()))
swapcase(): Inverte maiúsculas e minúsculas.
print("Alô, mundo!".swapcase())
title(): Converte o texto em palavras com primeira letra maiúscula.
print("este é um título".())
upper(): Converte o texto em maiúsculas.
print("Alô, mundo!".upper())
zfill(): Acrescenta zeros a esquerda do texto.
print("101".zfill(8))
O Tipo lógico, ou booleanos, do inglês boolean, são representados pelos valores lógicos True (verdadeiro) e False (falso).
Ao atribuir um literal a uma variável, ou o valor de uma expressão lógica, é instanciado um objeto da classe bool e o endereço do objeto é atribuido à variável, que passa a apontar para o objeto.
a = True
b = not a
print(f"a: {a} b: {b}")
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(f"10 >= 9 : {10 >= 9}")
print(f"10 == 9 : {10 == 9}")
print(f"10 <= 9 : {10 <= 9}")
Quando você executa uma condição em uma instrução if, o Python retorna um objeto da classe bool com valor True ou False, e executando a seguir o corpo do bloco correspondente ao resultado se o resultado for verdadeiro.
a = 200
b = 33
if b > a:
print("b é maior que a")
else:
print("b é menor que a")
O construtor bool() permite avaliar e converter os valores constantes ou de variáveis de outros tipos, usados no argumento do construtor, em valores lógicos, se houver correspondência possível.
A maioria dos tipos pode ser convertida em valores lógicos, seguindo critérios para considerar o valor como verdadeiro ou falso.
Zero de qualquer tipo numérico (0, 0.0, 0j, respectivamente inteiro, real e complexo), texto vazio ("" ou ''), sequências vazias ('', (), []), e conjuntos vazios ({}) são considerados falsos.
print(f"bool(0): {bool(0)}, bool(15): {bool(15)}")
print(f"bool(0.0): {bool(0.0)}, bool(15.0): {bool(15.0)}")
print(f"bool(0j): {bool(0j)}, bool(15j): {bool(15j)}")
print(f"bool(''): {bool('')}, bool('Alô!'): {bool('Alô!')}")
print(f"bool([]): {bool([])}, bool([1,2,3]): {bool([1,2,3])}")
print(f"bool(()): {bool(())}, bool((1,2,3)): {bool((1,2,3))}")
print(f"bool({{}}): {bool({})}, bool({1,2,3}): {bool({1,2,3})}")
print(f"bool(False): {bool(False)}, bool(True): {bool(True)}")
Usando variáveis recebendo os resultados da chamada do construtor bool():
a = ""
b = 0
x = "Alô!"
y = 15
print(f"a = ''; bool(a): {bool(a)}")
print(f"b = 0; bool(b): {bool(b)}")
print(f"x = 'Alô!'; bool(x): {bool(x)}")
print(f"y = 15; bool(y): {bool(y)}")
O tipo para datas não é um tipo de dado nativo 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
#
data_hora = datetime.datetime.now()
print(data_hora)
Para criar uma data, podemos usar o método-construtor da classe datetime() do módulo datetime.
A classe datetime() requer três argumentos no mímino para criar uma data: dia, mês, ano.
Exemplo: Crie um objeto de data.
import datetime as dt
data_hora = dt.datetime(2020, 5, 17)
print(data_hora)
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, (None para fuso horário).
data_hora = dt.datetime(2024, 6, 12, 10, 15, 30, 60, tzinfo=dt.timezone.utc)
print(data_hora)
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
data_hora = dt.datetime.now()
print(data_hora.year)
print(data_hora.strftime("%A"))
Principais métodos da classe date:
Método | Descrição |
year | Retorna o ano |
month | Retorna o mês |
day | Retorna o dia |
weekday | Retorna o dia da semana |
isoweekday | Retorna o dia da semana ISO |
isoformat | Retorna o horário ISO |
ctime | Retorna o horário |
strftime() | Retorna o horário |
Exemplos dos métodos de instância da classe date.
Criamos um objeto da classe date com ano, mês e dia na variável apenas_data.
import datetime as dt
apenas_data = dt.date(2024, 6, 12)
year: Retorna o ano.
print(apenas_data.year)
month: Retorna o mês.
print(apenas_data.month)
day: Retorna o dia.
print(apenas_data.day)
weekday: Retorna o dia da semana.
print(apenas_data.weekday())
isoweekday: Retorna o dia da semana ISO.
print(apenas_data.isoweekday())
isoformat(): Retorna o horário ISO.
print(apenas_data.isoformat())
ctime(): Retorna um texto representando a data.
print(apenas_data.ctime())
strftime(): Retorna um texto representando a data, controlada por um texto explícito de formatação.
print(apenas_data.strftime("%d-%m-%Y"))
Para criar um horário, podemos usar o método-construtor da classe time() do módulo datetime.
Exemplo: Crie um objeto de horário.
import datetime as dt
apenas_data = dt.time(10,15,30)
print(apenas_data)
A classe time() recebe parâmetros para hora e fuso horário (hora, minuto, segundo, microssegundo, tzone), mas eles são opcionais e estão com o valor padrão de 0, (None para fuso horário).
Os métodos da classe time:
Método | Descrição |
hour() | Retorna a hora |
minute() | Retorna o minuto |
second() | Retorna o segundo |
microsecond() | Retorna o microssegundo |
tzinfo | Retorna o fuso horário |
tzname() | Retorna o nome do fuso horário |
utcoffset() | Retorna o fuso horário |
dst() | Retorna o fuso horário |
timestamp() | Retorna o timestamp |
fromtimestamp() | Retorna um horário a partir de um timestamp |
fromisoformat() | Retorna um horário a partir de um horário ISO |
Exemplos dos métodos de horário da classe time.
hour(): Retorna a hora.
import time as tm
import datetime as dt
apenas_hms = dt.time(10, 15, 30, 60, dt.timezone.utc)
hour: Retorna a hora.
print(apenas_hms.hour)
minute: Retorna o minuto.
print(apenas_hms.minute)
second: Retorna o segundo.
print(apenas_hms.second)
microsecond: Retorna o microssegundo.
print(apenas_hms.microsecond)
tzinfo: Retorna o fuso horário.
print(apenas_hms.tzinfo)
tzname(): Retorna o nome do fuso horário.
print(apenas_hms.tzname())
utcoffset(): Retorna o fuso horário.
print(apenas_hms.utcoffset())
dst(): Retorna o fuso horário.
print(apenas_hms.dst())
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
data_hora = dt.datetime(2018, 6, 1)
print(data_hora.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 |
Exemplos da tabela acima:
import datetime as dt
data_hora = dt.datetime(2024, 5, 30)
def print_data(simbolo,descricao,data_hora=data_hora):
print(f'{simbolo}: {data_hora.strftime(simbolo):12} ({descricao})')
print_data('%a','Dia da semana, versão curta')
print_data('%A','Dia da semana, versão completa')
print_data('%w','Dia da semana como um número 0-6, 0 é domingo')
print_data('%d','Dia do mês 01-31')
print_data('%b','Nome do mês, versão curta')
print_data('%B','Nome do mês, versão completa')
print_data('%m','Mês como um número 01-12')
print_data('%y','Ano, versão curta')
print_data('%Y','Ano, versão completa')
print_data('%H','Hora 00-23')
print_data('%I','Hora 00-12')
print_data('%p','AM/PM')
print_data('%M','Minuto 00-59')
print_data('%S','Segundo 00-59')
print_data('%f','Microssegundo 000000-999999')
print_data('%z','deslocamento UTC')
print_data('%Z','fuso horário CST')
print_data('%j','Número do dia do ano 001-366')
print_data('%U','Número da semana do ano, domingo como o primeiro dia da semana, 00-53')
print_data('%W','Número da semana do ano, segunda-feira como o primeiro dia da semana, 00-53')
print_data('%c','Versão local de data e hora')
print_data('%C','Século 20')
print_data('%x','Versão local da data')
print_data('%X','Versão local da hora')
print_data('%%','Um personagem %')
print_data('%G','ISO 8601 ano')
print_data('%u','ISO 8601 dia da semana (1-7)')
print_data('%V','número da semana ISO 8601 (01-53)')
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).
Existem 4 tipos de coleções:
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)
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, ordenados e duplicados, entre colchetes '[' e ']' e separados por vírgula ','.
'
Os itens da lista são objetos de valores de diferentes tipos, ordenados de acordo como são declarados na lista e que podem estar duplicados, contendo métodos que permitem a sua manipulação.
lista = ["maçã", "banana", "banana", "cereja"]
print(lista)
Também é possível usar o construtor list() ao criar uma nova lista.
lista = list(("maçã", "banana", "cereja")) # tupla no argumento
print(lista)
O método len() retorna o tamanho da lista.
tamanho = len(lista)
print(tamanho)
No Python as listas são objetos com o tipo de dados 'list'.
print(type(lista))
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.
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".
Exemplo: ordenação e reordenação de listas.
Listas originais:
print('--> listas originais')
lista_alfa = ["laranja", "manga", "kiwi", "abacaxi", "banana"]
lista_num = [100, 50, 65, 82, 23]
print(lista_alfa)
print(lista_num)
Listas ordenadas:
print('--> listas ordenadas')
lista_alfa.sort()
lista_num.sort()
print(lista_alfa)
print(lista_num)
Listas ordenadas de forma reversa:
print('--> listas com ordenação reversa')
lista_alfa.sort(reverse = True)
lista_num.sort(reverse = True)
print(lista_alfa)
print(lista_num)
A lista é mutável, o que significa que podemos alterar, adicionar e remover itens nela após sua criação.
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 |
A seguir exemplos dos métodos de lista.
append(): Adiciona um elemento no final da lista.
lista = ["maçã", "banana", "cereja"]
lista.append("morango")
print(lista)
copy(): Retorna uma cópia da lista.
print(lista.copy())
count(): Retorna o número de elementos com o valor especificado.
print(lista.count("banana"))
extend(): Adiciona os elementos de uma lista (ou qualquer iterável), ao final da lista atual.
lista.extend(["cajú", "abacaxi", "laranja"])
print(lista)
index(): Retorna o índice do primeiro elemento com o valor especificado.
print(lista.index("banana"))
insert(): Adiciona um elemento na posição especificada.
lista.insert(1, "laranja")
print(lista)
pop(): Remove o elemento na posição especificada.
print(lista.pop(1))
remove(): Remove o item com o valor especificado.
lista.remove("laranja")
print(lista)
reverse(): Inverte a ordem da lista.
lista.reverse()
print(lista)
sort(): Classifica a lista.
lista.sort()
print(lista)
sort(reverse=True): Classifica a lista inversamente.
lista.sort(reverse=True)
print(lista)
len(): Retorna o tamanho da lista.
print(len(lista))
in: Retorna True se o elemento estiver na lista e False se o elemento não estiver na lista.
print("banana" in lista)
not in: Retorna True se o elemento não estiver na lista e False se o elemento estiver na lista.
print("banana" not in lista)
clear(): Remove todos os elementos da lista.
lista.clear()
print(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'
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:])
As listas podem ser modificadas, adicionando ou sobrepondo novos itens ou removendo itens existentes.
Para alterar o valor de um item específico, consulte o item pela sua posição usando o número do índice:
lista = ["maçã", "banana", "cereja"]
lista[1] = "pera"
print(lista)
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: alteraçã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", "melão"]
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", "cajú"]
lista.insert(1, "laranja")
print(lista)
Remover item especificado
O método remove() exclui o item especificado.
lista = ["maçã", "banana", "limão"]
lista.remove("banana")
print(lista)
O método pop() remove o índice especificado.
Exemplo: remoção do segundo item.
lista = ["maçã", "banana", "cajá"]
lista.pop(1)
print(lista)
Se você não especificar o índice, o método pop() removerá o último item.
Exemplo: remoção do último item.
lista = ["maçã", "banana", "pitanga"]
lista.pop()
print(lista)
A palavra-chave del também remove o índice especificado.
Exemplo: remoção do primeiro item.
lista = ["maçã", "banana", "acerola"]
del lista[0]
print(lista)
A palavra-chave del também pode excluir a lista completamente.
lista = ["maçã", "banana", "jabuticaba"]
del lista
O método clear() esvazia a lista, que continua existindo, sem itens.
lista = ["maçã", "banana", "ameixa"]
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", "maracujá"]
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", "abacate"]
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.
frutas = ["maçã", "Coco", "mangaba", "kiwi", "maçã"]
Sem compreensão de lista:
nova_lista = []
for x in frutas:
if "a" in x:
nova_lista.append(x)
print(nova_lista)
Com compreensão de lista:
nova_lista = [x for x in frutas if "a" in x]
print(nova_lista)
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.
frutas = ["maçã", "banana", "framboesa"]
Atribuindo frutas para nova_lista_1:
nova_lista_1 = frutas
print(nova_lista_1 == frutas)
print(nova_lista_1 is frutas)
Existem diferentes maneiras para copiar de uma listas:
Atribuindo frutas.copy() para nova_lista_2:
nova_lista_2 = frutas.copy()
print(nova_lista_2 == frutas)
print(nova_lista_2 is frutas)
print(nova_lista_2 == nova_lista_1)
print(nova_lista_2 is nova_lista_1)
Atribuindo list(frutas) para nova_lista_3:
nova_lista_3 = list(frutas)
print(nova_lista_3 == frutas)
print(nova_lista_3 is frutas)
print(nova_lista_3 == nova_lista_2)
print(nova_lista_3 is nova_lista_2)
print(nova_lista_3 == nova_lista_1)
print(nova_lista_3 is nova_lista_1)
Atribuindo [x for x in frutas] para nova_lista_4:
nova_lista_4 = [x for x in frutas]
print(nova_lista_4 == frutas)
print(nova_lista_4 is frutas)
print(nova_lista_4 == nova_lista_3)
print(nova_lista_4 is nova_lista_3)
print(nova_lista_4 == nova_lista_2)
print(nova_lista_4 is nova_lista_2)
print(nova_lista_4 == nova_lista_1)
print(nova_lista_4 is nova_lista_1)
Existem diferentes maneiras de concatenar uma lista ou mais listas em outra, ou em uma nova lista.
Exemplo: concatenando listas.
Declaramos as listas lista_1 e lista_2, e a lista_3 contendo os itens das listas lista_1 e lista_2 concatenadas com o operador "+".
lista_1 = ["a", "b", "c"]
lista_2 = [1, 2, 3]
lista_3 = lista_1 + lista_2
print("lista_1 =", lista_1)
print("lista_2 =", lista_2)
print("lista_3 =", lista_3)
Exemplo: concatenando listas com o método extend.
# criamos uma cópia da lista_1
copia = lista_1.copy()
# concatenamos os itens da lista_2
copia.extend(lista_2)
# imprimimos a cópia concatenada
print("copia =", copia)
Exemplo: concatenando listas com o método append.
# criamos uma cópia da lista_1
copia = lista_1.copy()
# concatenamos os itens da lista_2
for x in lista_2:
copia.append(x)
# imprimimos a cópia concatenada
print("copia =", copia)
As tuplas são coleções imutáveis (não alteráveis) de itens de diferentes tipos, entre parenteses '(' e ')' e separados por vírgula ','.
Os itens permanecem ordenados na tupla após a criação, podem estar duplicados e são indexados, do primeiro item com índice [0] até o último com índice [len(tupla)-1], .
tupla = ("maçã", "banana", "cereja")
print(f"tupla = {tupla}, tamanho = {len(tupla)}")
Quando dizemos que as tuplas são ordenadas, significa que a ordem definida na declaração da tupla não será alterada.
tupla = (7,3,4,1,9,2,8,6,5)
print(tupla)
As tuplas são imutáveis, o que significa que não podem ser alteradas, adicionando-se ou removendo-se itens após a sua criação.
tupla = ("maçã", "banana", "cereja")
try:
tupla[0] = "laranja"
except:
print("imutável")
print(tupla)
As tuplas são indexadas e podem ter itens duplicados, com o mesmo valor.
tupla = ("maçã", "banana", "cereja", "maçã", "banana", "banana", "cereja")
print(tupla)
É chamado "empacotamento" a atribuição valores uma tupla.
frutas = ("maçã", "banana", "cereja") # empacotamento
print(frutas)
É chamado "desempacotamento" a extração dos itens da tupla para variáveis.
frutas = ("maçã", "banana", "cereja") # empacotamento
(verde, amarelo, vermelho) = frutas # desempacotamento
print(verde)
print(amarelo)
print(vermelho)
O desempacotamento é bastante útil com o retorno de resultados das funções:
def funcao():
return 1, 2, 3
tupla = funcao()
print(f"tupla = {tupla}")
(x, y, z) = tupla
print(f"x = {x}, y = {y}, z = {z}")
ou
def funcao():
return (1, 2, 3)
x, y, z = funcao()
print(x, y, z)
Observe que valores de retorno de uma função são agrupados em uma tupla, mesmo que não estejam entre parenteses.
Para juntar duas ou mais tuplas você pode usar operador "+".
tupla1 = ("a", "b" , "c")
tupla2 = (1, 2, 3)
tupla3 = tupla1 + tupla2
print(tupla3)
Tuplas não podem ser juntadas a listas, conjuntos ou dicionários.
tupla = ("a", "b" , "c")
lista = [1, 2, 3]
try:
tupla = tupla + lista
except:
print("não é possível juntar tuplas e listas")
print(tupla)
Se você quiser repetir o conteúdo de uma tupla um determinado número N de vezes, você pode usar o operador "*" para multiplicar a tupla por N.
Exemplo: Repita a tupla de frutas 2 vezes.
frutas = ("maçã", "banana", "cereja")
tupla = frutas * 2
print(tupla)
Você pode acessar os itens da tupla consultando o número do índice entre colchetes '[' e ']'.
O primeiro item tem índice [0] (índice zero) e o último tem índice [len(tupla)-1] (número de itens da tupla menos um).
frutas = ("manga", "abacate", "laranja", "uva")
print(f"frutas = {frutas}")
# impressão do segundo item na tupla 'frutas'
print(f"frutas[1] = {frutas[1]}")
Impressão de todos os itens na lista:
for i in range(len(frutas)):
print(f"frutas[{i}] = {frutas[i]}")
Indexação negativa é feita do sentido do último item em direção ao primeiro, com o índice [-1] referindo-se ao último item, o índice [-2] referindo-se ao penúltimo, e assim por diante, até o índice [0].
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])
A pesquisa começará no índice 2 (incluído) e terminará no índice 5 (não incluído).
Ao deixar de fora o valor inicial, o intervalo começará no primeiro item.
O primeiro item tem índice 0.
Exemplo: itens do primeiro item ao item do índice 4 (não incluído).
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:])
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])
O laço while é usado para percorrer os itens da tupla, enquanto a condição for verdadeira.
tupla = ("maçã", "banana", "cereja")
i = 0
while i < len(tupla):
print(tupla[i])
i = i + 1
A tupla é imutável, o que significa que não pode ser alterada nos itens indexados, e itens não podem ser adicionados ou removidos após sua criação.
Existem soluções alternativas.
Embora não seja adequado o uso de uma tupla havendo a necessidade de ser alterada, pode-se usar o método alternativo de convertê-la em uma lista, alterando-se a lista, para convertê-la então novamente em 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.
Converter em uma lista:
Assim como a solução alternativa para alterar uma tupla, você pode convertê-la em uma lista, adicionar itens e convertê-la novamente em uma tupla.
tupla = ("maçã", "banana", "cereja")
lista = list(tupla) # converte a tupla em lista
lista.append("laranja") # adiciona "laranja"
tupla = tuple(lista) # converte novamente em tupla
print(tupla)
Concatenar tuplas:
Você pode adicionar duas tuplas com os operadores de atribuição + ou += e atribuir em uma variável.
# criação de tupla
tupla1 = ("maçã", "banana", "cereja")
# criação de nova tupla
tupla2 = ("laranja","manga","abacaxi")
# adição de tuplas
tupla1 += tupla2
print(tupla1)
Ao criar uma tupla com apenas um item, lembre-se de incluir uma vírgula após o item, caso contrário o objeto não será identificado como uma tupla.
aux = ("maçã")
print(f"{aux}: {type(aux)}")
aux = ("maçã",)
print(f"{aux}: {type(aux)}")
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
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 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 dict
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 conjuntos são mutáveis sob o aspecto de adição e remoção de itens e imutável sob o aspecto de acesso aos itens.
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 são repetidos, havendo apenas um item com o mesmo valor.
conjunto = {"maçã", "banana", "cereja", "maçã"}
print(conjunto)
Os itens de um conjunto não são acessados com índices ou chaves.
conjunto = {"maçã", "banana", "cereja"}
print(conjunto[0])
Entretanto, os itens podem ser iterados com o laço (loop) for.
for x in conjunto: print(x)
A palavra-chave in permite verificar a presença de itens com determinado valor.
print("banana" in conjunto)
Podemos adicionar e remover itens do conjunto.
Após a criação os itens dos conjuntos não podem ser alterados.
try:
conjunto[0] = "kiwi"
except Exception as e:
print(f"Ocorreu um erro do tipo '{type(e)'}: '{e}'")
print(conjunto)
Os ítens não podem ser alterados mas novos itens podem ser adicionados.
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)
Se o item a ser removido não existir, o método remove() irá gerar um erro.
conjunto = {"maçã", "banana", "cereja"}
try:
conjunto.remove("kiwi")
except Exception as e:
print(f"Ocorreu um erro do tipo '{type(e)}': {e}")
O método discard() não gera um erro se o item não existir.
conjunto = {"maçã", "banana", "cereja"}
conjunto.discard("banana")
print(conjunto)
Você também pode usar o método pop() para remover o último item do conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto.pop()
print(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 método pop()
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)
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)
Os itens de um conjunto são percorridos com laços (loops) de iteração for.
conjunto = {"maçã", "banana", "cereja"}
for x in conjunto: print(x)
Também pode ser usado o método len() para obter o número de itens de um conjunto para ser usado com o laço while.
conjunto = {"maçã", "banana", "cereja"}
x = len(conjunto)
i = 0
while i < x:
print(conjunto[i]);
i += 1
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 |
Exemplos dos métodos de conjuntos.
add(): Adiciona um elemento ao conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto.add("morango")
print(conjunto)
clear(): Remove todos os itens do conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto.clear()
print(conjunto)
copy(): Retorna uma cópia do conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto_copia = conjunto.copy()
print(conjunto_copia)
difference(): Retorna um conjunto, que é a diferença entre dois ou mais conjuntos.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj3 = conj1.difference(conj2)
print(conj3)
difference_update(): Remove os itens neste conjunto que não são presentes em outro conjunto especificado.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj1.difference_update(conj2)
print(conj1)
discard(): Remove o item especificado.
conjunto = {"maçã", "banana", "cereja"}
conjunto.discard("banana")
print(conjunto)
intersection(): Retorna um conjunto, que é a interseção de dois ou mais conjuntos.
conj1 = {1 ,2, 3, 4, 5, 6, 7},
conj2 = {5, 6, 7, 8, 9, 10},
conj3 = conj1.intersection(conj2)
print(conj3)
intersection_update(): Remove os itens neste conjunto que não são presentes em outro(s) conjunto(s) especificado(s).
conj1 = {1 ,2, 3, 4, 5, 6, 7},
conj2 = {5, 6, 7, 8, 9, 10},
conj1.intersection_update(conj2)
print(conj1)
isdisjoint(): Retorna se dois conjuntos são disjuntos ou não.
conj1 = {1, 2, 3}
conj2 = {4, 5, 6}
conj3 = {3, 4, 5}
print(conj1.isdisjoint(conj2))
print(conj1.isdisjoint(conj3))
issubset(): Retorna se outro conjunto contém este conjunto ou não.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
print(conj1.issubset(conj2))
issuperset(): Retorna se este conjunto contém outro conjunto ou não.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
print(conj1.issuperset(conj2))
pop(): Remove um elemento do conjunto.
conjunto = {"maçã", "banana", "cereja"}
conjunto.pop()
print(conjunto)
remove(): Remove o elemento especificado.
conjunto = {"maçã", "banana", "cereja"}
conjunto.remove("banana")
print(conjunto)
symmetric_difference(): Retorna um conjunto com as diferenças simétricas de dois conjuntos.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj3 = conj1.symmetric_difference(conj2)
print(conj3)
union(): Retorna um conjunto com a união de dois conjuntos.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj3 = conj1.union(conj2)
print(conj3)
update(): Atualiza um conjunto com os elementos de outro conjunto.
conj1 = {"a", "b" , "c"}
conj2 = {1, 2, 3}
conj1.update(conj2)
print(conj1)
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'