Aprenda os fundamentos do Python em 30 Dias  —  Dia 6 (Tuplas e Conjuntos)

Original: medium.com – devops-challenge


Tuplas

Tuplas em python são seqüências imutáveis ​​de objetos arbitrários, uma vez criados eles não podem ser alterados (substituídos/removidos) e novos elementos não podem ser adicionados.

Similar à lista mas delimitado por parênteses ao invés de colchetes

>>> a = (1,2,3)
>>> a
(1, 2, 3)
>>> type(a)
<class 'tuple'>

Podemos acessar o elemento usando a indexação

>>> a[0]
1

Podemos usar len() para encontrar o número de elementos

>>> len(a)
3

Podemos iterá-lo usando loop

>>> for i in a:
...   print(i)
...
1
2
3

Concatenar usando o operador +

>>> a
(1, 2, 3)
>>> b = (4,5,6)
a + b
(1, 2, 3, 4, 5, 6)

Repetição pode ser feito usando o operador *

>>> a * 2
(1, 2, 3, 1, 2, 3)

Como mencionado acima tuplas são imutáveis, por isso se tentarmos alterá-lo, ele resultará um TypeError

>>> a[0]= 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Uma coisa a notar é que não podemos usar um objeto ** com um único elemento** dentro do parêntesis como uma tupla porque o Python o tratará como um inteiro

>>> b = (10)
>>> type(b)
<class 'int'>

Para uma tupla de um único elemento, devemos incluir uma vírgula à direita do elemento

>>> b = (10,)
>>> type(b)
<class 'tuple'>

Mas então como podemos especificar as tuplas vazias? Muito simples, para fazer isso basta usar parênteses vazios.

>>> c = ()
>>> type(c)
<class 'tuple'>

As tuplas são úteis para retornar vários valores

>>> def minmax(ellist):
...   return min(ellist), max(ellist)
...
>>> a = [1,2,3,4,5,6]
>>> minmax(a)
(1, 6)

NOTA: Mais informações sobre iteração e funções veremos em um capítulo futuro.

O desempacotamento de tuplas (tuple unpacking) nos permitem desestruturaá-la diretamente em referências nomeadas

>>> min, max = minmax(a)
>>> min
1
>>> max
6

Podemos facilmente trocar (swap) variáveis ​​usando tuplas

>>> a = 5
>>> b = 10
>>> a,b = b,a
>>> a
10
>>> b
5

Veja como o mesmo código sem tupla fica mais verboso

>>> x = 4
>>> y = 5
>>>
>>> temp = x
>>> x = y
>>> y = temp
>>> x
5
>>> y
4

Alguns métodos das tuplas

index()

Quando precisamos descobrir o índice de um valor específico

>>> a = (1,2,3,1)
>>> a.index(1)
0

count()

Conta quantas vezes um dado valor aparece em tupla

>>> a = (1,2,3,1)
>>> a.count(1)
2

Agora pergunta é onde eu vou usar tupla?

Suponha que vamos escrever um programa onde passaremos um objeto e precisamos ter certeza de que ele não será alterado, nesses casos tupla pode ser a nossa solução por sua principal característica (imutable)

Exercício

1: Escreva uma tupla que só pode imprimir valores pares

MyTup = ("Bem-vindo", "ao", "mundo", "da","super", "tupla")

#Saída
("Para", "mundo", "tupla")

Conjuntos

Conjuntos (sets) são uma coleção desordenada de elementos exclusivos. A coleção é mutável, ou seja, os elementos podem ser adicionados/removidos do conjunto, mas cada elemento deve ser ele próprio imutável muito semelhante às chaves keys de um dicionário.

Conjuntos são semelhantes aos dicionários (assim como eles, usam chaves), mas cada item é um único objeto ao invés de um par unido por dois pontos.

>>> c = {1,2,3,4}
>>> c
{1, 2, 3, 4}
>>> type(c)
<class 'set'>

Os conjuntos são usados ​​principalmente para descartar itens duplicados

>>> d = {1,2,3,3,2}
>>> d
{1, 2, 3}

Os conjuntos são iteráveis

>>> for i in d:
...   print(i)
...
1
2
3

Para adicionar elementos ao conjunto usamos o método add()

>>> e
{1, 2, 3}
>>> e.add(4)
>>> e
{1, 2, 3, 4}

Se tentarmos adicionar um elemento que já existe não haverá efeito e nem será lançado qualquer erro.

>>> e.add (4)
>>> e
{1, 2, 3, 4}

Para adicionar vários elementos

>>> e.update([7,8,9])
>>> e
{1, 2, 3, 4, 7, 8, 9}

Para remover um elemento do conjunto

>>> e.remove(7)
>>> e
{1, 2, 3, 4, 8, 9}

NOTA: Tentar remover um elemento que não existe lançará um erro

>>> e.remove (7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 7

# outro método análogo é o  método é descartar
>>> e.discard(1)
>>> e
{2, 3, 4}
# não produz qualquer erro mesmo o membro não estando presente
>>> e.discard (1)

O outro uso útil de tipos de conjunto é o grupo poderoso de operações. Estes permitem-nos facilmente calcular conjuntos união, conjunto diferença, conjunto interseção e subconjuntos.

# Diferença
>>> a = {1,2,3}
>>> b = {3,4,5}
>>> a.difference(b)
{1, 2}
# Intersecção
>>> a.intersection(b)
{3}
# subconjunto Subset
>>> a.issubset(b)
False
>>> b.issubset(a)
False

Final da lição do Dia 06, Em caso de dúvidas ou qualquer outra discussão, este é o link para o canal (Comunicação somente em Inglês – english only) Python Slack channel http://devops-myworld.slack.com


Anúncios

Escrito por zrhans

Professor at UFSM

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s