Спасибо Алексею за полное и лаконичное пояснение 🧡, а я добавлю еще пояснялку с замерами по памяти ➖➖ Я взяла тестовый файлик с 1 млн строк и протестила все функции на нем по типу такого: ```import sys with open('1000000 Sales Records.csv') as f: f_list = f.readlines() print(type(f_list)) print(len(f_list)) print(sys.getsizeof(f_list)) # in bytes``` 🔶Результаты🔶 🟣read() <class 'str'> 123 793 263 - длина строки 123 793 312 - размер в байтах 🟣readlines() <class 'list'> 1 000 001 - количество строк (+заголовок) 8 448 728 - размер в байтах 🟣файловый итератор <class '_io.TextIOWrapper'> 208 - размер в байтах ➡️ Получилось, что на выборке в 1 млн строк c длиной ~ 200 символов выигрыш по памяти между списком и итератором составил в 40k раз ➖➖ Если мы попробуем сделать такую же штуку с list(range(1000000)) vs range(1000000), то получим нечто похожее: 🟣list(range(1000000)) <class 'list'> 1 000 000 - количество чисел 8 000 056 - размер в байтах 🟣range(1000000) <class 'range'> 1000000 - количество чисел 48 - размер в байтах ➡️ Тут с чиселками выигрыш в 166k раз Вот и думайте #python_tips