lectura de elementos de un fichero
Arnau Sanchez
pyarnau en gmail.com
Dom Oct 26 16:19:42 CET 2008
Ibrahim Peraza Kelly escribió:
> Estoy empezando a aprender python y leyendo un ejemplo me encuentro con
> estas líneas que soy incapaz de comprender, en concreto la tercera
>
> file = open("test.txt", 'rt')
> content = file.readlines()
> tiles = [[x for x in row.split()] for row in content]
>
> El fichero test es un fichero con elementos separados por espacios. Entiendo
> que abrimos el fichero en modo lectura, leemos el fichero entero y lo
> almacenamos en la variable content que es una lista de strings, y cada
> string tiene el contenido de cada línea del fichero test.txt. Luego ya en la
> tercera línea soy incapaz de entender qué se está haciendo, si alguién me lo
> puede explicar se lo agradecería enormemente
Lo que se hace en esa tercera línea es una comprensión de lista (dos, de hecho):
http://es.diveintopython.org/odbchelper_map.html
De todos modos, ese código no es del todo correcto: almacenar el contenido de
todas las líneas para luego tratarlas no es muy eficiente, es preferible
aprovechar que la iteración sobre objetos fichero devuelve su contenido línea a
línea. Además, [x for x in row.split()] es redundante, ya que es equivalente a
row.split(). Sólo si se tiene que hacer algo con "x" se justificaría esa
comprensión de lista.
En fin, que esas 3 líneas se podrían reescribir en 1:
tiles = [row.split() for row in open("test.txt")]
o si prefieres la función map (menos idiomático):
tiles = map(str.split, open("test.txt"))
--
Web: http://tokland.freehostia.de
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es