В этом случае вы можете использовать циклы for, поскольку вы выполняете итерацию определенное количество раз (один раз для каждого элемента в списке). Это не супер-интуитивно понятное, а наиболее чисто связанное с программированием, которое вы могли бы изменить от чисто истинного / ложного условия выполнения к ограниченному счетному условию выполнения.
Эта линия мышления очень быстро нарушается, если вы задействуете какое-то количество оборудования. Допустим, у вас есть программа, которая включает светодиод, пока вы удерживаете кнопку.
while(button is down)
{
LED = ON;
}
Нечто подобное вы не захотите делать с циклом for, потому что нет способа подсчитать что-то, что нужно знать, когда вы останавливаетесь, количество времени определяется человеком, удерживающим кнопку, и не может быть известно компьютером, пока это не произойдет.
TL; DR: Вы можете использовать циклы для многих вещей, которые не являются интуитивно понятными. Но вы не можете использовать их для замены КАЖДОГО возможного цикла while.