web-dev-qa-db-fra.com

Création de la boucle jusqu'à list.length

Je lis en ce moment sur les boucles for, et je suis curieux de savoir s'il est possible de faire une boucle for en Python comme en Java.

Est-il même possible de faire quelque chose comme

for (int i = 1; i < list.length; i++)

et pouvez-vous faire une autre boucle for à l'intérieur de cette boucle?

Merci

22
Agape

En Python, vous pouvez parcourir la list elle-même:

for item in my_list:
   #do something with item

ou pour utiliser des index, vous pouvez utiliser xrange() :

for i in xrange(1,len(my_list)):    #as indexes start at zero so you 
                                    #may have to use xrange(len(my_list))
    #do something here my_list[i]

Il existe une autre fonction intégrée appelée enumerate() , qui renvoie à la fois item et index:

for index,item in enumerate(my_list):
    # do something here

exemples:

In [117]: my_lis=list('foobar')

In [118]: my_lis
Out[118]: ['f', 'o', 'o', 'b', 'a', 'r']

In [119]: for item in my_lis:
    print item
   .....:     
f
o
o
b
a
r

In [120]: for i in xrange(len(my_lis)):
    print my_lis[i]
   .....:     
f
o
o
b
a
r

In [122]: for index,item in enumerate(my_lis):
    print index,'-->',item
   .....:     
0 --> f
1 --> o
2 --> o
3 --> b
4 --> a
5 --> r
40
Ashwini Chaudhary

Oui, vous pouvez, avec range[docs]

for i in range(1, len(l)):
    # i is an integer, you can access the list element with l[i]

mais si vous accédez de toute façon aux éléments de la liste, il est plus naturel de les parcourir directement:

for element in l:
   # element refers to the element in the list, i.e. it is the same as l[i]

Si vous voulez ignorer le premier élément, vous pouvez trancher la liste [Didacticiel] :

for element in l[1:]:
    # ...

pouvez-vous faire une autre boucle for à l'intérieur de cette boucle 

Sûr que vous pouvez.

5
Felix Kling

La réponse dépend de ce que vous avez besoin d'une boucle.

bien sûr, vous pouvez avoir une boucle similaire à Java:

for i in xrange(len(my_list)):

mais je n'ai jamais utilisé de boucles comme ça,

parce que d'habitude vous voulez itérer

for obj in my_list

ou si vous avez aussi besoin d'un index

for index, obj in enumerate(my_list)

ou vous voulez produire une autre collection à partir d'une liste

map(some_func, my_list)

[somefunc[x] for x in my_list]

il existe également un module itertools qui couvre la plupart des cas liés à une itération

veuillez également jeter un coup d'œil aux fonctions intégrées telles que any, max, min, all, enumerate

Je dirais - n'essayez pas d'écrire du code de type Java en python. Il y a toujours une manière pythonique de le faire.

2
RomanI

Vous pouvez en apprendre davantage sur les boucles Python ici: http://en.wikibooks.org/wiki/Python_Programming/Loops

Vous devez savoir que Python n'a pas {et} pour le début et la fin de la boucle, cela dépend des caractères de tabulation que vous entrez en premier de ligne, je veux dire des retraits de ligne. 

Ainsi, vous pouvez faire une boucle dans la boucle avec double tabulation (retrait)

Voici un exemple de double boucle:

onetoten = range(1,11)
tentotwenty = range(10,21)
for count in onetoten:
    for count2 in tentotwenty
        print(count2)
1
Vahid Farahmand

J'essayais de chercher la solution avec Google et la chaîne Python pour l'instruction, c'est aussi simple que cela. Le premier lien dit tout. (Un bon forum, vraiment, mais son utilisation semble parfois ressembler à celle de Microsoft qui comprend tous les avantages des produits de l'interface graphique: fenêtres à l'intérieur, idiots à l'extérieur.)

0
Vidul