Python for line in file - считывание построчно (по одной строке)
Primary tabs
строка:
for line in file
позволяет читать файл построчно - так как file - это генератор уже организованный в виде множества строк.
Пример использование генератора можно посмотреть здесь
Обсуждение:
Каков механизм работы строки?
for line in file
в контексте:
def read_input(file): for line in file: # split the line into words yield line.split()
?
Пример использования:
data = read_input(sys.stdin)
line - это просто переменная?
почему файл разбивается именно на строки (как оказывается возможной итерация по строкам в функции read_input )?
- Log in to post comments
- 19556 reads
humanmashine
Fri, 02/07/2014 - 17:35
Permalink
Тут надо понять, что такое генераторы.
file - это генератор. Особые конструкции в Python. Line с помощью итератора получает строки (строки разбиваются как мы привыкли, символом переноса). Особенность генераторов в том, что они экономят ресурсы машины, мы не читаем и не храним сразу весь файл, а только по строкам.
На хабре есть статья про yield - это один из механизмов создания генераторов, полезно чтобы понять: http://habrahabr.ru/post/132554/
В книге Марка Лутца "Изучаем Python 4-е издание" есть Глава 14 "Итераторы и генераторы, часть 1" и Глава 20 "Итераторы и Генераторы" (я сейчас как раз решаю одну проблему с Python и книги Марка Лутца всегда под рукой)
Но line - это просто переменная))))
К сожалению вопрос слишком емкий, чтобы я мог его полностью здесь раскрыть.
vedro-compota
Mon, 02/10/2014 - 12:29
Permalink
file - это генератор.
понял. спасибо)
прошу прокомментировать на русском код к файлу reducer.py - особенно те строки где встречается слово for
(частично я там уже перевёл)
_____________
матфак вгу и остальная классика =)
vedro-compota
Mon, 02/10/2014 - 16:33
Permalink
и ещё концептуальный вопрос:
и ещё концептуальный вопрос: http://fkn.ktu10.com/?q=node/5850
_____________
матфак вгу и остальная классика =)