Skip to content

Tutorial de Estruturas de Dados em Python

    estrutura de dados

    Aprenda sobre estruturas de dados em Python para organizar e manipular dados. Explore tipos como strings, listas e pilhas neste tutorial.

    Tipos de Dados Abstratos e Estruturas de Dados

    Antes de explorarmos as estruturas de dados, vamos entender o que são Tipos de Dados Abstratos (TDAs). Eles simplificam a resolução de problemas, evitando detalhes técnicos.

    Em resumo, estruturas de dados são uma forma de representar Tipos de Dados Abstratos usando construções de programação e tipos de dados. Elas se dividem em duas categorias: primitivas e não primitivas.

    Estruturas de Dados Primitivas

    Estas são as formas mais simples de representação de dados e são os blocos de construção para a manipulação de dados. Python possui quatro tipos primitivos de variáveis:

    Inteiros

    Você pode usar um inteiro para representar dados numéricos, especificamente números inteiros de menos infinito a mais infinito, como 4, 5 ou -1.

    inteiro = 4

    Float (Ponto Flutuante)

    “Float” significa ‘número de ponto flutuante’. Você pode usá-lo para números racionais, geralmente com uma parte decimal, como 1.11 ou 3.14.

    flutuante = 3.14

    Strings

    As strings são coleções de letras, palavras ou outros caracteres. Em Python, você pode criar strings colocando uma sequência de caracteres entre aspas simples ou duplas, por exemplo: ‘bolo’, “biscoito”, etc.

    texto1 = 'Bolo'
    texto2 = "Biscoito"

    Você também pode realizar operações de concatenação de strings:

    x = 'Bolo'
    y = 'Biscoito'
    resultado = x + ' & ' + y
    
    print(resultado)

    Isso imprimirá:

    'Bolo & Biscoito'

    Há muitas outras operações que você pode realizar com strings, como repetição e corte de substrings.

    texto = 'Python'
    repeticao = texto * 2  # Isso resultará em 'PythonPython'
    
    substring = texto[2:]  # Isso resultará em 'thon'

    Além disso, Python oferece muitos métodos embutidos para manipular strings, como capitalize(), len(), isdigit(), replace(), find(), entre outros.

    Booleanos

    Este tipo de dado pode assumir os valores True (Verdadeiro) e False (Falso). Frequentemente, eles são intercambiáveis com os inteiros 1 e 0 e são úteis em expressões condicionais e de comparação.

    x = 4
    y = 2
    comparacao = x == y  # Isso resultará em False
    
    comparacao2 = x > y  # Isso resultará em True

    Conversão de Tipos de Dados

    Às vezes, você pode precisar converter um tipo de dado em outro. Por exemplo, converter um inteiro em um número de ponto flutuante ou vice-versa. Você pode fazer isso usando a “type casting” (conversão de tipos).

    Conversão Implícita de Tipos de Dados

    Isso acontece automaticamente e o compilador cuida disso para você. Por exemplo, ao dividir dois números inteiros em Python 3, o resultado será um número de ponto flutuante.

    x = 4.0
    y = 2
    z = x / y  # O resultado será um número de ponto flutuante
    
    print(type(z))  # Isso imprimirá <class 'float'>

    Conversão Explícita de Tipos de Dados

    A conversão de tipos de dados explícita é definida pelo programador e você precisa informar ao compilador para qual tipo deseja converter os dados.

    x = 2
    y = "O Poderoso Chefão: Parte "
    filme_favorito = y + str(x)  # Convertendo o inteiro em uma string antes da concatenação
    
    print(filme_favorito)  # Isso imprimirá 'O Poderoso Chefão: Parte 2'

    Esses são os tipos de dados primitivos e a conversão de tipos de dados em Python. Em seguida, vamos explorar as estruturas de dados não primitivas.

    Estruturas de Dados Não Primitivas

    As estruturas de dados não primitivas são mais complexas e podem armazenar coleções de valores em diversos formatos. Elas incluem:

    Listas

    As listas em Python são usadas para armazenar coleções de itens heterogêneos. Elas são mutáveis, o que significa que você pode alterar seu conteúdo sem alterar sua identidade. Você pode reconhecer listas pelos colchetes [ e ] que contêm elementos separados por vírgulas.

    lista_vazia = []  # Lista vazia
    lista_numeros = [1, 2, 3]
    lista_mista = [1, 'maçã', 3.14]
    
    print(lista_mista[1])  # Isso
    
     imprimirá 'maçã'

    Você pode adicionar, remover e modificar elementos em uma lista.

    minha_lista = [1, 2, 3]
    
    minha_lista.append(4)  # Adicionando um elemento ao final da lista
    
    minha_lista[0] = 0  # Modificando um elemento
    
    del minha_lista[1]  # Removendo um elemento
    
    print(minha_lista)  # Isso imprimirá [0, 3, 4]

    Tuplas

    As tuplas são semelhantes às listas, mas são imutáveis, o que significa que seus elementos não podem ser alterados após a criação. Você as reconhecerá pelos parênteses ( e ) que contêm elementos separados por vírgulas.

    tupla_vazia = ()  # Tupla vazia
    tupla_um_elemento = (42,)  # Tupla com um elemento (necessário a vírgula)
    
    coordenadas = (3, 4)
    
    print(coordenadas[0])  # Isso imprimirá 3

    Devido à sua imutabilidade, as tuplas são úteis quando você deseja garantir que os dados não sejam modificados acidentalmente.

    Dicionários

    Dicionários são estruturas de dados que armazenam pares chave-valor. Cada chave deve ser única, e os valores podem ser de qualquer tipo. Os dicionários são definidos com chaves { e }, com pares chave-valor separados por dois pontos :.

    meu_dicionario = {
        'nome': 'Alice',
        'idade': 30,
        'cidade': 'Wonderland'
    }
    
    print(meu_dicionario['idade'])  # Isso imprimirá 30

    Os dicionários são úteis para mapear informações relacionadas e facilitam a recuperação de valores com base em suas chaves.

    Conjuntos

    Conjuntos são coleções de elementos únicos, o que significa que não pode haver duplicatas em um conjunto. Eles são definidos com chaves { e }, semelhantes aos dicionários, mas sem pares chave-valor.

    meu_conjunto = {1, 2, 3, 3, 4, 5}
    
    print(meu_conjunto)  # Isso imprimirá {1, 2, 3, 4, 5}

    Os conjuntos são úteis quando você precisa armazenar elementos exclusivos ou realizar operações de conjunto, como união e interseção.

    Arquivos

    Python permite que você trabalhe com arquivos para armazenar informações persistentes. Você pode abrir, ler e escrever em arquivos usando funções embutidas.

    # Abrindo um arquivo para escrita
    arquivo = open('meu_arquivo.txt', 'w')
    arquivo.write('Olá, mundo!')
    arquivo.close()
    
    # Abrindo um arquivo para leitura
    arquivo = open('meu_arquivo.txt', 'r')
    conteudo = arquivo.read()
    arquivo.close()
    
    print(conteudo)  # Isso imprimirá 'Olá, mundo!'

    Esses exemplos mostram como usar estruturas de dados em Python. Elas são ferramentas poderosas para organizar informações. À medida que você se torna mais experiente, pode usá-las de maneiras avançadas. Divirta-se explorando e pergunte se tiver dúvidas!

    Outras Referências

    Seleção de Estrutura de Dados: Um Estudo de Caso

    Exercícios

    1. O que é []?
    2. Como você atribuiria o valor ‘hello’ como o terceiro valor de uma lista armazenada em uma variável chamada spam? (Suponha que spam contenha [2, 4, 6, 8, 10].)
    3. Para as três perguntas a seguir, vamos supor que spam contenha a lista [‘a’, ‘b’,’c’, ‘d’].
    4. Para que valor spam[int(int(‘3’ * 2) / 11)] é avaliado?
    5. Para que valor spam[-1] é avaliado?
    6. Para que valor spam[:2] é avaliado?
      Para as três perguntas a seguir, vamos supor que bacon contenha a lista
      [3.14, ‘cat’, 11, ‘cat’, True].
    7. Como bacon.append(99) altera o valor de lista em bacon?
    8. Como bacon.remove(‘cat’) altera o valor de lista em bacon?
    9. Qual é a diferença entre os métodos de lista append() e insert()?
    10. Quando você usaria um tipo de variável lista? E quando usaria um dicionário?
    11. Qual estrutura ocupa mais espaço na memória do computador? Um booleano ou uma string?
    12. Qual é a aparência do código para criar um dicionário vazio?
    13. Qual é a aparência de um valor de dicionário com uma chave igual a ‘foo’ e
      um valor 42?
    14. Qual é a principal diferença entre um dicionário e uma lista?
    15. O que acontecerá se você tentar acessar spam[‘foo’] se spam for igual a
      {‘bar’: 100}?

    Exercícios Desafio

    1.Crie um programa que solicite ao usuário 5 nomes de alunos e suas respectivas notas e imprima a média da turma; Use uma lista para armazenar os dados e outra para armazenar os nomes;

    2.Tente refazer o exercício anterior utilizando uma tupla; Deu erro? Por quê?

    3.Como resolver o problema anterior usando tuplas?

    Tags:

    Leave a Reply

    Your email address will not be published. Required fields are marked *