diff --git a/aula198.py b/aula198.py new file mode 100644 index 0000000..5883515 --- /dev/null +++ b/aula198.py @@ -0,0 +1,80 @@ +# Deque - Trabalhando com LIFO e FIFO +# deque - Double-ended queue +# +# Lifo e fifo +# pilha e fila + +# LIFO (Last In First Out) +# Pilha (stack) +# Significa que o último item a entrar será o primeiro a sair (list) +# Artigo: +# https://www.otaviomiranda.com.br/2020/pilhas-em-python-com-listas-stack/ +# Vídeo: +# https://youtu.be/svWVHEihyNI +# Para tirar itens do final: O(1) Tempo constante +# Para tirar itens do início: O(n) Tempo Linear + +from collections import deque + +lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + +# ✅ Legal (LIFO com lista) +# 0 1 2 3 4 5 6 7 8 9 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +lista.append(10) +# 0 1 2 3 4 5 6 7 8 9 10 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +lista.append(11) +# 0 1 2 3 4 5 6 7 8 9 10, 11 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] +ultimo_removido = lista.pop() +# 0 1 2 3 4 5 6 7 8 9 10 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +print('Último: ', ultimo_removido) +print('Lista:', lista) +# 0 1 2 3 4 5 6 7 8 9 10 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +print() + + +lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + +# 🚫 Ruim (FIFO com lista) +# 0 1 2 3 4 5 6 7 8 9 +# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +lista.insert(0, 10) +# 0 1 2 3 4 5 6 7 8 9, 10 +# [10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +lista.insert(0, 11) +# 0 1 2 3 4 5 6 7 8 9, 10 11 +# [11, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +primeiro_removido = lista.pop(0) # 11 +# 0 1 2 3 4 5 6 7 8 9, 10 +# [10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +print('Primeiro: ', primeiro_removido) # 11 +print('Lista:', lista) # [10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +print() + +# FIFO (First In First Out) +# Filas (queue) +# Significa que o primeiro item a entrar será o primeiro a sair (deque) +# Artigo: +# https://www.otaviomiranda.com.br/2020/filas-em-python-com-deque-queue/ +# Vídeo: +# https://youtu.be/RHb-8hXs3HE +# Para tirar itens do final: O(1) Tempo constante +# Para tirar itens do início: O(1) Tempo constante + +# ✅ Legal (FIFO com deque) + +fila_correta: deque[int] = deque() +fila_correta.append(3) # Adiciona no final +fila_correta.append(4) # Adiciona no final +fila_correta.append(5) # Adiciona no final +fila_correta.appendleft(2) # Adiciona no começo +fila_correta.appendleft(1) # Adiciona no começo +fila_correta.appendleft(0) # Adiciona no começo +print(fila_correta) # deque([0, 1, 2, 3, 4, 5]) +fila_correta.pop() # 5 +fila_correta.popleft() # 0 +print(fila_correta) # deque([1, 2, 3, 4])