[Sequanux-ml] question sur les listes en python

Rémy HUBSCHER hubscher.remy at gmail.com
Lun 28 Sep 14:03:43 CEST 2009


Le lundi 28 septembre 2009 à 12:31 +0200, Jonas a écrit :
> Voici un petit bout de python que j'ai trouvé sur wikibook
> http://fr.wikibooks.org/wiki/Exemples_de_scripts_Python
> 
> # calcul des nombres premiers inferieurs a N
> #initialisation
> N     = 200
> liste  = range(2, N)                           # liste de 2 à N
> nombre = 2
> while (nombre*nombre <= N):                    # tant que le nb premier < a la
>                                               # racine carree de N
>   for i in liste[ liste.index(nombre) + 1: ]: #parcourt la liste avec ce nombre
>       if i % nombre == 0:                     #un multiple du nombre est trouve
>           del( liste[ liste.index(i) ] )      # on le raye de la liste
>   nombre = liste[liste.index(nombre) + 1]     # on prend le nombre
> suivant non raye
> 
> print liste                                    #affichage du resultat
> 
> Ce que je ne comprend pas c'est cette ligne
> for i in liste[ liste.index(nombre) + 1: ]: #parcourt la liste avec ce nombre
> Plus particulèrement, je ne comprend pas ce qu'il se passe "dans le
> décor" avec ce ':', je sais qu'il y a un slice, mais à part ça ?
> --
> Attention, le reply-to se fait à l'expéditeur, pas à la liste
> Sequanux-ml at sequanux.org
> http://sequanux.org/cgi-bin/mailman/listinfo/sequanux-ml

Tout simplement, à chaque boucle for, on commence un peu plus loin dans
la liste.

liste[x:] veut dire que l'on ne prend pas en compte les x premier indice
de la liste.

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[2:]
[2, 3, 4, 5, 6, 7, 8, 9]

Voili, voilou



Plus d'informations sur la liste de diffusion Sequanux-ml