Python Sidekick: Finalizando seu treinamento de herói!

Tuplas, Conjuntos, Funções e dicas!

Christian Costa
Data Hackers
6 min readOct 13, 2019

--

A essa altura você já deve ter alguma familiaridade com Python, saber variáveis, estruturas de controle, estruturas de repetição e trabalhar com listas.

Agora vamos dar uma olhada em outros conceitos importantes, que com certeza podem te ajudar a trabalhar melhor com a linguagem. Nesse post vamos falar sobre tuplas, conjuntos, funções e no final algumas sugestões e fontes de estudo. Lets code!

Coleções em Python

Além das já comentadas listas, existem as tuplas e os conjuntos, que são outros tipos de coleções em python. Assim como as listas o index das tuplas e conjuntos também começa em zero e a forma de usar loop para verificar item a item é a mesma. Vamos dar uma olhada nesses dois outros tipos de coleção e suas particularidades!

Tuplas

Trabalhando com listas podemos adicionar elementos, remover ou substituir, entretanto isso não é possível com tuplas. Tuplas são imutáveis e não podem ter seus valores alterados ao longo de um programa.

Para declarar uma lista utilizamos [], no caso das tuplas utilizamos (), mas esse uso é apenas uma boa prática para melhor visualização ao ler o código o que define de fato uma tupla não é o uso dos parênteses e sim da vírgula , :

Estrutura básica de uma tupla:

Mesmo para criar uma tupla com apenas um elemento devemos utilizar a vírgula:

Por serem imutáveis tentar mudar valores de uma tupla da forma abaixo irá gerar um erro:

Como mencionado, podemos ver seus itens um a um usando forassim como faríamos com uma lista:

Podemos acessar apenas parte dos seus itens usando [:]:

E para apagar uma tupla inteira usamos del:

Conjuntos

Conjuntos (sets) são coleções cujos itens são únicos, ou seja, eu tenho apenas um item de cada.

Para declarar um set usamos {} :

Observe que mesmo tendo colocado o 50 nesse set duas vezes, ao chamá-lo ele é exibido somente uma vez.

Manipulando Conjuntos

Assim como nas listas podemos manipular os elementos de um conjunto. O modo de fazer isso muda um pouco mas a ideia é a mesma.

Removendo e Adicionando Itens

Para remover um elemento usamos remove() e para adicionar add():

Se eu tentar remover um item que não existe com remove(), teremos um erro. Por isso usamos discard(), que verifica o conjunto e remove caso o item exista:

Como estamos falando de conjuntos, todas as operações possíveis em matemática também podem ser feitas com python.

Intersecção e Diferença

Para encontrar os elementos diferentes entre entre dois conjuntos devo usar difference().

Vamos criar um conjunto data_science e um desenvolvimento_web para ver a diferença entre eles:

Eu também posso fazer isso usando o operador de subtração (-) :

Para saber a intersecção entre eles (o que ambos têm em comum) usamos intersection():

Também é possível obter a intersecção entre três ou mais conjuntos, para isso basta passar seus respectivos nomes dentro do parênteses (conjunto1, conjunto2). Dessa forma:

A intersecção também pode ser encontrada através do operador &, assim:

Itens em comum

Assim como eu posso encontrar os elementos em comum entre dois conjuntos, posso verificar quando não tem nenhum em comum usando isdisjoint(). Esse método retorna um valor de verdadeiro ou falso:

Eu posso verificar se um conjunto é subconjunto de outro usando issubset(). Para ser um subconjunto todos os elementos de um devem estar dentro do outro. Vejamos exemplo:

Para unir dois ou mais grupos utilizamos union():

Movendo e Duplicando Itens

Para remover o último item e reutilizá-lo usamos pop(), assim como fazemos com listas:

Para copiar um conjunto usamos copy():

E para limpar um dicionário todo usamos clear():

Ao copiar um conjunto usando copy(), mesmo que o conjunto original seja modificado a cópia permanece a mesma.

Funções

Funções são partes de código criadas para realizar determinado tipo de tarefa. Elas servem para otimizar a codificaçãoe permitir reusabilidade de código em casos onde eu precise fazer a mesma coisa de novo, de novo e de novo.

Ao criar uma função, sempre que eu precisar dela basta chamá-la. A estrutura básica de uma função é a seguinte:

A função é declarada com def de define. Dessa forma eu digo ao Python que estou criando uma função. Após o nome escolhido colocamos (): e logo abaixo indentamos o código da ação que deve ser executada.

Feito isso eu chamo essa função fora da indentação. Vejamos o seguinte exemplo:

Return

O return value é o valor que a função retorna para a linha que a chamou. Para obter esse valor utilizamosreturn que diz ao código qual valor da função ele deve passar quando ela for chamada.

Tomemos como exemplo o código abaixo, uma função que receba uma base e um expoente e faça um cálculo retornando o resultado:

Nesse caso resultado é o valor que eu quero que seja retornado. Eu passo os argumentos à função, ela realiza o cálculo e retorna o resultado.

Ao executar esse programa não será exibido 8 pois o return retorna o valor para a linha que chama a função sem necessariamente exibir o resultado.

Argumentos e Parâmetros

Em alguns casos pode ser que haja necessidade de passar informações para uma função executar sua tarefa. Por exemplo uma função que mostre o livro favorito de um usuário:

Nesse exemplonome_livro é o parâmetro dessa função e ‘Fahrenheit 451 é o seu argumento.

Parâmetros são as informações que a função precisa para executar sua tarefa e argumentos são as informações passadas para que essa tarefa seja executada.

Veja:

Argumentos Posicionais e Argumentos Nominais

Quando mais de um argumento precisa ser passado à função, podemos utilizar argumentos posicionais ou nominais.

Como o próprio nome indica argumentos posicionais são recebidos na ordem em que são passados e argumentos nominais são um par chave-valor associados que a função recebe.

Vamos utilizar novamente a função livro_favorito, dessa vez recebendo o nome do livro e de seu autor como argumentos.

Primeiro usando argumentos posicionais:

Nesse caso eu sabia a ordem livro-autor e passei os valores na ordem que faz sentido dentro da frase, entretanto caso eu inverta esses valores o resultado não será o esperado:

Para contornar essa possível inconsistência dizemos explicitamente quais valores pertencem a quais chaves, usando argumentos nominais:

Valores Padrão

Os valores padrão são usados para obter uma resposta caso um dos argumentos fique faltando ou não seja passado. Por exemplo:

Nessa função, caso eu não passe nenhum valor para nome_usuario o argumento assume o valor padrão. Ao passar um argumento ele sobrescreve o valor padrão.

Argumentos opcionais

Algumas vezes pode ser que numa função haja a opção de passar um argumento, entretanto esse argumento não é obrigatório.

Por exemplo a seguinte função que recebe o nome de uma banda, um álbum e o ano do álbum:

Se houver um terceiro argumento o output será diferente. Ao criar o terceiro argumento com um valor padrão vazio temos a possibilidade de modificar ou não esse valor.

Caso não fosse atribuído um valor padrão, mesmo utilizando if-else teríamos um erro ao rodar o código.

Argumentos arbitrários

Também há a possibilidade de receber um número indefinido de argumentos, ou seja, armazenar sejam quantos argumentos eu receber para determinados parâmetros.

Para isso usamos * antes do nome do parâmetro. Vamos criar uma função que receba uma lista de compras:

Nesse exemplo, independente de quantos itens houver na lista a função irá receber como argumento.

Eu sei Python, e agora?

No post Python: From Zero to…Sidekick falei que antes de desenvolver a skynet ou criar o próximo Overwatch você precisaria dominar o básico. Bom, chegou o seu momento! Vejamos algumas recomendações para aprendizado posterior:

Exercícios e Desafios

  • O já mencionado Guanabara tem uma playlist com vários exercícios resolvidos passo a passo.
  • A wiki do Python Brasil tem algumas listas de exercícios divididor por “tema”, listas, loops, operadores e vários outros. Quando comecei aprender Python esses exercícios foram ótimos para meu desenvolvimento.
  • Se você tem pretensões de trabalhar como desenvolvedor Python e quer se preparar com desafios baseados nas entrevistas white board das empresas do vale do silício indico os sites HackerRank, Coderbyte e Codewars. São centenas de desafios com diversos níveis de dificuldade que vão dar um boost nas suas habilidades.

Django

Data Analisys e Machine Learning

--

--

Christian Costa
Data Hackers

“Pelos livros que eu tive acesso minha obrigação é espalhar pro resto”