лист в большинстве случаев стоит использовать не как контейнер (он в этом качестве очевидно плох, если не учитывать некоторые юз-кейсы), а как control-flow структуру (подобно итератору в некоторых других языках), с помощью которой можно декомпозировать обработчики потока данных