Можно ли заменить бесконечный цикл while на обычный

Пытаюсь заменить бесконечный цикл на обычный, но не выходит.

N = 5000
a = 10000000000000000000
b = 99999999999999999999
lst = []

while len(lst) < N:
    arr = [str(randint(a, b))[g:(g+4):] for g in range (0 , 20 , 5)]
    print(arr)

Я создал лист, в котором N(=5000) 20 разрядные числа.
Эти числа надо разделить на 4-4 группы.

Заменить, но без использования break и continue.

Также можно заменить на цикл for, но и это у меня не выходит.


Ответы (2 шт):

Автор решения: Иван Гречка

Можно. Цикл идет от листа до N, поэтому указываем это в нашем range:

for i in range(len(lst,N,1):
    arr = [str(randint(a, b))[g:(g+4):] for g in range (0 , 20 , 5)]
    print(arr)
→ Ссылка
Автор решения: CrazyElf

У вас вообще никак lst внутри цикла не меняется, получается, что цикл будет действительно бесконечным. Предположу, что в lst должен добавляться arr на каждой итерации цикла, т.е. цикл идёт пока в lst не будет N элементов. Тогда заменить на for очень просто:

from random import randint

N = 5000
a = 10000000000000000000
b = 99999999999999999999
lst = []

for _ in range(N):
    arr = [str(randint(a, b))[g:(g+4):] for g in range (0 , 20 , 5)]
    #print(arr)
    lst.append(arr)

Печать я закомментировал, чтобы экран не забивался кучей информации.

→ Ссылка