Можно ли заменить бесконечный цикл 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)
Печать я закомментировал, чтобы экран не забивался кучей информации.