Как вы, ребята, справляетесь с этим в своей повседневной жизни?
Мы не знаем, потому что это не проблема в повседневной жизни. Это звучит как проблема, возможно, в ограниченных доменах.
Если вы недавно создали списки, значит, вы, вероятно, уже проделали O (N) работу, поэтому просмотр списка для получения его длины, вероятно, не имеет большого значения.
Если вы создаете несколько очень больших списков, которые не сильно «меняются» (очевидно, никогда не меняются, но я имею в виду изменение набора ссылок на заголовки списков, которые используются в вашем домене / алгоритме), то это может имеет смысл просто располагать словарь рядом с кортежами reference-to-list-head * length и обращаться к словарю при запросе длин (выполнение реальной работы по их обходу при необходимости, но кеширование результатов для будущего спрашивает о тот же список).
Наконец, если вы действительно имеете дело с каким-то алгоритмом, который должен постоянно обновлять списки в игре и постоянно сверяться с длинами, то создайте свой собственный тип данных, подобный списку (да, вам также нужно написать карту / фильтр и любые другие).
(В целом, я думаю, что лучше всего использовать встроенные структуры данных в 99,99% времени. В 0,01% времени, когда вы разрабатываете алгоритм или часть кода, которая должна быть очень высокой оптимизированный, то почти всегда вам нужно отказаться от встроенных структур данных (которые в большинстве случаев достаточно хороши) и использовать пользовательскую структуру данных, предназначенную для решения именно той проблемы, над которой вы работаете. Структуры "для идей и воплощения в этом случае. Но редко переходят к этому случаю.)