Convertir un ficher en liste

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Convertir un ficher en liste

Message par fakbill » 31 mai 2016 22:18

Bon déjà il y a des fonctions numpy qui font ça. On n'est bien sûr pas les premiers à vouloir lire un fichiers txt. de mémoire c'est numpy.fromfile mais google...
Dans le cadre de la confection d'un algorithme
La confection? :roll: d'un algo? Un algo c'est une recette de cuisine. Là, tu as un problème d’implémentation de l'étape triviale de ton algo qui consiste à "lire le fichier d'entrée".

L.append(a) est une horreur. on ne construit jamais (sauf sous la torture) une liste avec une suite de append. Au niveau perfo c'est une horreur.

"with" est plus simple et propre que open/close sans gestion explicite des exceptions mais dans ce cas c'est assez trivial.
Ou est-ce impropre ?
Non c'est bien...sauf que numpy le fait (et peut être même python lui même)...mais c'est pythonic.
list(map(float, f.readlines()))
C'est correct également.

decimal ne règle pas les "problèmes" des floats. https://docs.python.org/2/library/decimal.html
C'est un module un peu étrange qui fait "croire" au débutant que les ordinateurs savent manipuler les réels.

0.0049780011177063 MOUHAHA :evil: :evil:
La notation scientifique...ça te dit qqch??? Sauf à faire certains calculs d'électrodynamique quantique, je ne connais pas de domaine de la physique dans lequel tous ces chiffres ont un sens...
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Avatar de l’utilisateur
np*

Messages : 0

Inscription : 28 nov. 2015 14:49

Profil de l'utilisateur : Élève de lycée

Re: Convertir un ficher en liste

Message par np* » 31 mai 2016 23:10

Voila encore le deuxième débat récurrent de ce sous-forum, et moi qui tombe dans le panneau de vouloir répondre.
L.append(a) est une horreur. on ne construit jamais (sauf sous la torture) une liste avec une suite de append. Au niveau perfo c'est une horreur.
Mon /usr/local/lib/python2.7/site-packages contient 12471 occurrences de append, ça doit bien servir à quelque chose ?

On est sur un forum pédagogique, avec des étudiants qui pour certains débutent l'informatique. La construction

Code : Tout sélectionner

liste_des_carres = []
for i in range(10):
  liste_des_carres.append(i ** 2)
est pour moi la construction naturelle en Python. La plus "efficace", pédagogiquement parlant. Le fait qu'il soit possible d'utiliser dans ce langage une syntaxe -- propre à ce langage -- qui permet une optimisation, n'est pas -- à mon humble avis -- la première préoccupation pédagogique à avoir.
$ $P = N\!P^* ?$ $

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Convertir un ficher en liste

Message par fakbill » 01 juin 2016 00:09

Heu...dans la lib standard ils ne l'utilisent jamais comme ça...ou alors les reviewers ont fumé avant d'accepter le coder et van Rossum n'est pas encore tombé sur cette partie.
https://wiki.python.org/moin/PythonSpee ... Tips#Loops
est pour moi la construction naturelle en Python.
Pas pour le reste du monde. C'est la construction la plus naturelle en pseudo-code; pas en python.
Je comprends bien que le but n'est pas d'en faire des experts en python mais on je pense qu'on peut leur donner les bons réflexes en python sans aucun overhead dans le cours. Ils devraient par exemple être convaincus au bout de deux ans qu'une telle fonction (lire un fichier txt dans une list/matrice) ne peut pas ne pas exister déjà toute faite en python.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Avatar de l’utilisateur
np*

Messages : 0

Inscription : 28 nov. 2015 14:49

Profil de l'utilisateur : Élève de lycée

Re: Convertir un ficher en liste

Message par np* » 01 juin 2016 01:45

Un extrait du code de pip :

Code : Tout sélectionner

    def _package_versions(self, links, search):
        result = []
        for link in self._sort_links(links):
            v = self._link_package_versions(link, search)
            if v is not None:
                result.append(v)
        return result
Où l'on reconnaît bien sûr la structure générale naturelle de construction d'une liste, même en Python.
Bien que j'aime beaucoup ce document, encore une fois, ce n'est pas la première chose que j'exposerais à des débutants en informatique. Il s'agit d'astuces et de détails (importants certes) pour écrire du code plus rapide/efficace. Aucun intérêt pour un débutant, il est bien temps d'apprendre cela après, une fois que l'on maîtrise la structure générale.
fakbill a écrit :Je comprends bien que le but n'est pas d'en faire des experts en python mais on je pense qu'on peut leur donner les bons réflexes en python sans aucun overhead dans le cours.
C'est peut-être là où ce n'est pas si évident. Vous voyez bien que de nombreux étudiants sur le forum comprennent très bien les listes en compréhension et de nombreuses constructions pythoniques. Mais pour les élèves avec plus de difficultés, introduire ces spécificités peut s'avérer contre productif, par exemple donner lieu à des incompréhensions du genre

Code : Tout sélectionner

print(i) for i in range(10)
Chacun son avis, le mien est que "donner les bons réflexes" ce n'est pas montrer très tôt les spécificités de Python, mais asseoir les bases de manière durable. Je trouve bien plus important, à titre très personnel, de donner "les bons réflexes" sur les noms de variables, les commentaires, etc.
fakbill a écrit :Ils devraient par exemple être convaincus au bout de deux ans qu'une telle fonction (lire un fichier txt dans une list/matrice) ne peut pas ne pas exister déjà toute faite en python.
On ne va pas reprendre ce débat. Je vous rappelle également que certains étudiants ont très bien pu faire toute la partie analyse numérique en Scilab et ne jamais avoir entendu parlé de numpy.
Dernière modification par np* le 02 juin 2016 20:00, modifié 4 fois.
$ $P = N\!P^* ?$ $

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Convertir un ficher en liste

Message par fakbill » 01 juin 2016 08:59

On est au moins d'accord sur l'importance de noms de variables et de commentaires :)
Je suis content de voir que pas mal d'étudiants sus ce forum ont les bons réflexes et cette info pour tous va dans le bon sens :)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre