Sets (dados sem ordem com operações lógicas otimizadas)

Tipos de dado em Python

Jason Myers

Instructor

Set

  • Únicos
  • Sem ordem
  • Mutáveis
  • Implementação em Python da Teoria de Conjuntos
Tipos de dado em Python

Criando sets

  • Sets são criados a partir de uma lista
cookies_eaten_today = ['chocolate chip', 'peanut butter', 
   ...: 'chocolate chip', 'oatmeal cream', 'chocolate chip']

types_of_cookies_eaten = set(cookies_eaten_today)
print(types_of_cookies_eaten)
set(['chocolate chip', 'oatmeal cream', 'peanut butter'])
Tipos de dado em Python

Modificando sets

  • .add() adiciona um único elemento
types_of_cookies_eaten.add('biscotti')

types_of_cookies_eaten.add('chocolate chip')

print(types_of_cookies_eaten)
set(['chocolate chip', 'oatmeal cream', 'peanut butter', 'biscotti'])
Tipos de dado em Python

Atualizando sets

  • .update() mescla outro set ou lista
cookies_hugo_ate = ['chocolate chip', 'anzac']

types_of_cookies_eaten.update(cookies_hugo_ate)

print(types_of_cookies_eaten)
set(['chocolate chip', 'anzac', 'oatmeal cream',  'peanut butter', 'biscotti'])
Tipos de dado em Python

Removendo dados de sets

  • .discard() remove com segurança um elemento pelo valor
  • .pop() remove e retorna um elemento arbitrário (KeyError quando vazio)
types_of_cookies_eaten.discard('biscotti')

print(types_of_cookies_eaten)
set(['chocolate chip', 'anzac', 'oatmeal cream', 'peanut butter'])
types_of_cookies_eaten.pop()
types_of_cookies_eaten.pop()
'chocolate chip'
'anzac'
Tipos de dado em Python

Operações com sets - semelhanças

  • O método .union() retorna um set com todos os nomes (ou)
  • O método .intersection() encontra dados em comum (e)
cookies_jason_ate = set(['chocolate chip', 'oatmeal cream',
'peanut butter'])
cookies_hugo_ate = set(['chocolate chip', 'anzac'])

cookies_jason_ate.union(cookies_hugo_ate)
set(['chocolate chip', 'anzac', 'oatmeal cream', 'peanut butter'])
cookies_jason_ate.intersection(cookies_hugo_ate)
set(['chocolate chip'])
Tipos de dado em Python

Operações com sets - diferenças

  • .difference() retorna o que está no set alvo e não nos argumentos (-)
  • O alvo importa!
cookies_jason_ate.difference(cookies_hugo_ate)
set(['oatmeal cream', 'peanut butter'])
cookies_hugo_ate.difference(cookies_jason_ate)
set(['anzac'])
Tipos de dado em Python

Vamos praticar!

Tipos de dado em Python

Preparing Video For Download...