Vous tentez peut-être de se rappeler la list comprehension qui est une belle façon, lisible de faire for
boucles.
mylist = [ deal_with('realKappaCoadd%03d_5.fit' % i) for i in range(200) ]
(chemin de fichier raccourci pour la lisibilité)
Toute fois que vous vous trouvez vouloir initialiser un vide list
puis .append()
à elle dans une boucle for
, pensez "list comprehension" de le faire en une seule ligne. Ou "generator expression", qui est une syntaxe étroitement liée, mais qui évalue paresseusement (qui vous permettrait de traiter quelque chose "profondeur d'abord" alors superficiellement apparaissant pour aller en largeur, mais je doute qu'il y ait un réel avantage à cela dans votre Cas).
Vous trouverez peut-être aussi utile de itérer sur la sortie de glob
qui trouvera tous les noms de fichiers correspondant à un certain motif:
import glob
list_of_filenames = sorted(glob.glob('realKappaCoadd*_5.fit'))
mylist = [ deal_with(filename) for filename in list_of_filenames ]
Depuis (des commentaires), il semble que l'ouverture d'un fichier fits
nécessite beaucoup de frais généraux, vous n'en voudrez probablement qu'un ouvert à la fois. Par conséquent, vous devriez opérer efficacement "en profondeur d'abord", en terminant complètement votre entreprise avec un fichier avant de passer au suivant. OMI la manière la plus lisible de le faire est de mettre toutes les étapes nécessaires pour un fichier, dans l'ordre, dans votre fonction deal_with
:
def deal_with(single_filename):
file_handle = fits.open(single_filename)
result = do_whatever_processing(file_handle)
# ...
# if necessary, explicitly close the file here
return result
Quel est le problème avec la boucle for? Je trouve que c'est le moyen le plus simple et le plus propre. – EsotericVoid
Ouais, utilisez probablement une boucle. Vous pouvez boucler la plage (200) si vous écrivez une fonction qui, pour chaque nombre i, produit le nom de fichier pour le fichier ith, puis une autre fonction qui effectue le traitement approprié du nom de fichier donné.C'est juste une suggestion de haut niveau; il y a plusieurs façons de le faire. – anandsun