Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=7961972&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 14:21:44 2016
Кодировка: Windows-1251
[python] simple stuff2 - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все | след. страница
muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  [python] simple stuff2
      18.09.2008 08:40
 

Как внутри цикла переходить к обработке следующей строчки?
line.next() не хочет.

code:
input_file = 'bird.inp' f_in = open(input_file, "r") lines=f_in.readlines() f_in.close() for line in lines:





Список гандонов (внизу)

__No__

Рег.: 17.01.2005
Сообщений: 21063
Из: Внутренняя Монголия
Рейтинг: 6309
  Re: [python] simple stuff2 [re: muse]
      18.09.2008 09:12
 

continue



Dixi.
muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  Re: [python] simple stuff2 [re: __No__]
      18.09.2008 09:29
 

ну это тоже не то
например, бывает нужно две строчки проскочить




Список гандонов (внизу)

Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: muse]
      18.09.2008 09:40
 

явным образом получить итератор и играться с ним.

muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  Re: [python] simple stuff2 [re: Yorik]
      18.09.2008 09:49
 

А можно на примере? Ввести индекс что ли?




Список гандонов (внизу)

__No__

Рег.: 17.01.2005
Сообщений: 21063
Из: Внутренняя Монголия
Рейтинг: 6309
  Re: [python] simple stuff2 [re: muse]
      18.09.2008 09:56
1

f.readlines() это список. Возьми да сделай цикл for i in range(f.readlines())

Если нужен итератор то можно xreadlines, а можно методами не заморачиваться:

 
code:
fvv@no:~/tmp$ cat tmp.txt a b c d e fvv@no:~/tmp$ cat tmp.py f = open('tmp.txt') for line in f: print line f.next() fvv@no:~/tmp$ python tmp.py a c e Traceback (most recent call last): File "tmp.py", line 5, in <module> f.next() StopIteration






Dixi.
Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: __No__]
      18.09.2008 11:27
-2

ужас. 2. у тебя сдвигают итератор и for, и next, ты используешь то, что в данном случае файл сам себе итератор, ... в общем, ужас.
http://docs.python.org/lib/typeiter.html - ссылка по теме.


__No__

Рег.: 17.01.2005
Сообщений: 21063
Из: Внутренняя Монголия
Рейтинг: 6309
  Re: [python] simple stuff2 [re: Yorik]
      18.09.2008 11:58
 

Quote:

ужас. 2. у тебя сдвигают итератор и for, и next, ты используешь то, что в данном случае файл сам себе итератор, ... в общем, ужас.




А тебе священный ужас мешает пользоваться фичами языка? :smirk:

 
Quote:

A file object is its own iterator, for example iter(f) returns f (unless f is closed). When a file is used as an iterator, typically in a for loop (for example, for line in f: print line), the next() method is called repeatedly. This method returns the next input line, or raises StopIteration when EOF is hit when the file is open for reading (behavior is undefined when the file is open for writing). In order to make a for loop the most efficient way of looping over the lines of a file (a very common operation), the next() method uses a hidden read-ahead buffer. As a consequence of using a read-ahead buffer, combining next() with other file methods (like readline()) does not work right.




Ссылка по теме: http://docs.python.org/lib/bltin-file-objects.html



Dixi.
muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  Re: [python] simple stuff2 [re: __No__]
      18.09.2008 12:06
 

ну это понятно, почему в примере в первом посте не предусмотрен переход к след. элементу внутри цикла?




Список гандонов (внизу)

__No__

Рег.: 17.01.2005
Сообщений: 21063
Из: Внутренняя Монголия
Рейтинг: 6309
  Re: [python] simple stuff2 [re: muse]
      18.09.2008 12:10
 

Непонятно о чем это ты.

Переход к следующему элементу предусмотрен в языке - использованием итератора или слова continue, почему в твоем коде ничего этого нет - ну ты так его написал. :confused:



Dixi.
muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  Re: [python] simple stuff2 [re: __No__]
      18.09.2008 12:14
 

я же написал, итератор не работает:

code:
from math import * input_file = 'bird.inp' f_in = open(input_file, "r") lines=f_in.readlines() f_in.close() for line in lines: lines.next()


code:
File "test.py", line 9, in ? lines.next() AttributeError: 'list' object has no attribute 'next'





Список гандонов (внизу)

muse
ihmaiwtd

Рег.: 15.08.2004
Сообщений: 19791
Из: WA
Рейтинг: 7286
  Re: [python] simple stuff2 [re: muse]
      22.09.2008 16:46
 

нашел





Редактировал muse (22.09.2008 16:53)

Список гандонов (внизу)

iamthegoodbot
member

Рег.: 12.10.2008
Сообщений: 155
Рейтинг: 26
  Re: [python] simple stuff2 [re: muse]
      12.10.2008 00:58
-6

ужас нах. зачем пользовать память под весь файл?
 
code:
cat a.txt 1 12 13 1244 cat 1.py f = open('a.txt') a = f.readline() while a: print a a = f.readline() f.close()


сорри за неактуальность. не выдержал.



с наилучшими пожеланиями
Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: iamthegoodbot]
      12.10.2008 01:23
-2

именно этим занимались все уважаемые джентельмены в этом треде. почитай повнимательней.

Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: [python] simple stuff2 [re: iamthegoodbot]
      12.10.2008 01:50
-4

Ну, и если пошла пьянка:
code:
with open ('a.txt') as f: a = f.readline () while a: print a a = f.readline ()




Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: Emacs]
      12.10.2008 02:24
-2

чем-таки вам не нравится итератор?..

iamthegoodbot
member

Рег.: 12.10.2008
Сообщений: 155
Рейтинг: 26
  Re: [python] simple stuff2 [re: Yorik]
      12.10.2008 03:13
-3

а) из всех предыдущих примеров только один не делал
readlines()
б) чем with f = open... лучше f = open(..) бла бла бла?
в) итераторы здесь надо использовать и их используем, но не явно (по сути
readline() - и есть метод .next(), который и есть итератор.



с наилучшими пожеланиями
Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: iamthegoodbot]
      12.10.2008 13:06
-2

а) читай внимательней.

iamthegoodbot
member

Рег.: 12.10.2008
Сообщений: 155
Рейтинг: 26
  Re: [python] simple stuff2 [re: Yorik]
      13.10.2008 01:10
-1

прочитал. где там больше одного человека до меня не использовали readlines()?



с наилучшими пожеланиями
Yorik

Рег.: 01.09.2005
Сообщений: 2476
Из: Москва
Рейтинг: 633
  Re: [python] simple stuff2 [re: iamthegoodbot]
      13.10.2008 01:33
1

Использовали readlines():
 muse
 muse

Использовали/предлагали другое:
 __No__
 __No__
 Emacs

и тут ты на белом коне "я все знаю, вы тут все не так пишете", пишешь тоже самое, что и последние 2 человека.


Страницы: 0 | 20 | показать все | след. страница

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 1 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы
>>
Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в