Python предоставляет три способа выполнения циклов. Хотя все способы обеспечивают схожую базовую функциональность, они отличаются синтаксисом и временем проверки условий.
В этой статье мы увидим, почему вложенный цикл работает лучше, чем сплющенный. Но сначала давайте посмотрим, что такое вложенный цикл и что такое сплющенный цикл.
- Nested loops (Вложенные циклы) — это логическая структура в компьютерном программировании и кодировании. В котором один оператор цикла находится внутри другого оператора цикла.
Синтаксис:
for [iter_1] in [sequence_1]:
for [iter_2] in [sequence_2]:
# statements of inner loop
statements(iter_2)
# statements of outer loop
statements(iter_1)
- Loops (Петли) имейте возможность перебирать элементы любой последовательности, такие как список или строка.
Синтаксис:
for [iter] in sequence: statements(s)
Когда мы запускаем наш скрипт на python, операционная система, в которой мы работаем, назначит ему идентификатор процесса. Он может быть прерван системными вызовами, и его приоритет может быть изменен с течением времени. Но система вряд ли отнимет ресурсы у процесса, когда мы изменим адрес или значения памяти. Когда мы запускаем плоский цикл for, он назначает гораздо меньше переменных, чем вложенный цикл. Таким образом, мы можем сказать, что вложенный цикл использует ресурсы больше, чем плоский цикл, если они доступны.
Пример:
# import module
import time
# flattened loop
def loop(n):
for i in range(n**3):
pass
# nested loop
def nested(n):
for i in range(n):
for j in range(n):
for k in range(n):
pass
for i in range(10, 100, 10):
start = time.time()
loop(i)
print('For flattened loop:',time.time() - start)
start = time.time()
nested(i)
print('For nested loop:',time.time() - start)
print()
Выход:
For flattened loop: 2.7894973754882812e-05
For nested loop: 4.9114227294921875e-05
For flattened loop: 0.0002155303955078125
For nested loop: 0.00024271011352539062
For flattened loop: 0.0007171630859375
For nested loop: 0.0007529258728027344
For flattened loop: 0.0016894340515136719
For nested loop: 0.0012614727020263672
For flattened loop: 0.0029077529907226562
For nested loop: 0.0022766590118408203
For flattened loop: 0.004510402679443359
For nested loop: 0.003597736358642578
For flattened loop: 0.007539272308349609
For nested loop: 0.0057599544525146484
For flattened loop: 0.01167440414428711
For nested loop: 0.008468151092529297
For flattened loop: 0.016645431518554688
For nested loop: 0.01381683349609375
Мы видим, что время, затрачиваемое вложенным циклом, уменьшается с увеличением значения n.