Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não entende esse trecho da aula.

Na transcrição da aula de tuple e dictionary, temos a seguinte transcrição.

"Há conjuntos de dados que nunca precisam mudar de tamanho. A lista de meses ou estações do ano são exemplos clássicos disso. Nesse caso pode fazer sentido usar uma estrutura de dados similar à lista que vimos, mas que não seja possível adicionar ou remover valores. No Python, essa estrutura de dados se chama Tuple."

"Vamos realizar uma ligeira modificação na declaração de nossa lista:"

>>> tipos_convite = ('vip', 'normal', 'meia', 'cortesia')
>>> tipos_convite
('vip', 'normal', 'meia', 'cortesia')

Entretanto por mais que não possa usar o "append" eu poderia usar a concatenação para fazer isso, demostrada na aula concatenar tuples e listas:

>>> status_civil = ('casado','solteiro') + ('divorciado',) 
>>> status_civil
('casado', 'solteiro', 'divorciado')
>>> type(status_civil)
<type 'tuple'>
///Fiz também um outro teste
>>> status_civil = ('casado','solteiro') 
>>>status_civil += ('divorciado',)
>>> status_civil
('casado', 'solteiro', 'divorciado')
>>> type(status_civil)
<type 'tuple'>

Fiquei com essa dúvida, pois descreve que não é possível adicionar e remover valores, entretanto se eu concatenar eu acaberia adicionando valores,então no exemplo do professor eu poderia colocar o penetra da seguinte forma:

>>> tipos_convite = ('vip', 'normal', 'meia', 'cortesia')
>>> tipos_convite
('vip', 'normal', 'meia', 'cortesia')
>>>tipos_convite += ('penetra')
>>> tipos_convite
('vip', 'normal', 'meia', 'cortesia','penetra')

A minha pergunta é que se isso não acabaria burlando o conceito de que a Tuple ser uma estrutura de dados que não pode adicionar e remover valores?

Obs.: Pelo menos a parte de remover valores eu não conseguir achar uma forma de fazer isso.

2 respostas
solução!

Oi Pedro, tudo bem?

As tuplas são imutáveis, o que quer dizer que não podemos modificar uma tupla existente, adicionar ou remover elementos.

Porém, com o operador de + podemos concatenar uma tupla a outra para que seja formada uma nova tupla, resultante da concatenação de ambas. Como temos uma formação de uma nova tupla, não ferimos o conceito.

Quanto a remover elementos de uma tupla, o que você pode fazer, mas, não é recomendado, é transformar a tupla em uma lista, remover o elemento desejado e depois, transformar em tupla novamente.

Por exemplo:

>>> tipos_convite = ('vip', 'normal', 'meia', 'cortesia')
>>> type(tipos_convite)
<type 'tuple'>
>>> tipos_convite = list(tipos_convite)
>>> type(tipos_convite)
<type 'list'>
>>> tipos_convite.remove('cortesia')
>>> tipos_convite
['vip', 'normal', 'meia']
>>> tipos_convite = tuple(tipos_convite)
>>> type(tipos_convite)
<type 'tuple'>
>>> tipos_convite
('vip', 'normal', 'meia')

Não é recomendado, porque se você está usando uma tupla, pressupõe-se que você não deseja que os valores sejam modificados. Tudo bem?

Qualquer dúvida é só falar, estou a disposição. Abraços e bons estudos!

Obrigado pela resposta.