Nested Loop em Python
Nested loops (loops aninhados) são um conceito fundamental em Python. Eles são usados para iterar por estruturas de dados complexas como matrizes. Em dados multidimensionais, um nested loop itera com eficiência por linhas e colunas, acessando e manipulando os elementos de cada posição. Nested loops também são usados quando é necessário verificar todas as combinações possíveis de elementos de diferentes conjuntos. Muitos algoritmos dependem de nested loops para resolver problemas de maneira passo a passo.
Nested Loop na Prática
Um nested loop é um loop dentro de outro loop. Um loop é chamado interno e o outro é chamado loop externo. O loop externo controla a execução geral. Ele é executado para um número específico de iterações, conforme definido por sua condição. O loop interno reside dentro do recuo do loop externo. Ele é executado completamente para cada iteração do loop externo, criando um padrão de execução aninhado. Veja um exemplo:
for i in range(5): # loop externo
for j in range(8): # loop interno
print(i + j, end=" ")
print()
# resultado:
# 0 1 2 3 4 5 6 7
# 1 2 3 4 5 6 7 8
# 2 3 4 5 6 7 8 9
# 3 4 5 6 7 8 9 10
# 4 5 6 7 8 9 10 11
Nested Loop com For e While Loop
Tanto o loop interno quanto o externo podem ser for ou while loops. No exemplo abaixo, o loop externo é um for loop e o interno é um while loop.
for i in range(4): # for loop externo
j = 1
while j < 5: # while loop interno
print('oi ' * (j+i), end=" ")
j += 1
print()
# resultado:
# oi oi oi oi oi oi oi oi oi oi
# oi oi oi oi oi oi oi oi oi oi oi oi oi oi
# oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi
# oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi oi
Iterações e Desempenho
O número de iterações para um nested loop é o produto das iterações do loop externo e do loop interno. Veja o exemplo:
lista = [[1,2,3], [4,5,6]]
for i in range(len(lista)):
for j in range(len(lista[i])):
print(f"Item de valor {lista[i][j]} se localiza na Linha {i+1}, Coluna {j+1}")
# resultados
# Item de valor 1 se localiza na Linha 1, Coluna 1
# Item de valor 2 se localiza na Linha 1, Coluna 2
# Item de valor 3 se localiza na Linha 1, Coluna 3
# Item de valor 4 se localiza na Linha 2, Coluna 1
# Item de valor 5 se localiza na Linha 2, Coluna 2
# Item de valor 6 se localiza na Linha 2, Coluna 3
No exemplo acima, usamos uma lista complexa. Ela representa uma matriz com duas linhas e três colunas. O loop externo itera 2 vezes, pois a matriz tem 2 linhas. Dentro de cada iteração do loop externo, o loop interno é executado 3 vezes. O número 3 corresponde às 3 colunas da matriz. Para cada combinação de i e j, a mensagem impressa mostra o valor do item na iteração e sua posição na matriz. Como o número de iterações para um nested loop é o produto das iterações do loop externo e do loop interno, no nosso exemplo, esse valor é 6.
Como é fácil perceber no exemplo acima, nested loops podem ser úteis, mas devem ser usados com cuidado. Eles podem levar a problemas de desempenho se forem implementados em listas ou matrizes grandes, pois o número de iterações aumenta multiplicativamente. Quando é necessário iterar em estruturas complexas como matrizes, uma solução mais eficiente é a vetorização.
Veja também:
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.