Bonsoir,
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et
agréable d'accéder à l'élément n-1 si l'élément courant est n.
J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index
de l'élément courant (et donc de pouvoir calculer celui de n'importe
quel autre élément) est un range(len(liste)), comme dans la boucle 2 du
programme ci-après.
Mais si quelqu'un a mieux à proposer, genre un mot magique donnant
l'index en cours dans une boucle, je suis preneur.
A+
jm
liste= ['a','x','b','z']
for l in liste:
print 'boucle 1: l=',l,' l-1 est inconnu'
for l in range(len(liste)):
print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile , et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'in dex de l'élément courant (et donc de pouvoir calculer celui de n'impo rte quel autre élément) est un range(len(liste)), comme dans la boucl e 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur.
Utilise enumerate :
py> liste = ['a','x','b','z'] py> for i, l in enumerate(liste): ... print 'index: %i, element: %s' % (i, l) ... index: 0, element: a index: 1, element: x index: 2, element: b index: 3, element: z py>
-- Amand Tihon
jean-michel wrote:
Bonsoir,
Bonsoir,
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile , et
agréable d'accéder à l'élément n-1 si l'élément courant est n.
J'ai toujours tenu pour acquis que la seule méthode pour avoir l'in dex
de l'élément courant (et donc de pouvoir calculer celui de n'impo rte
quel autre élément) est un range(len(liste)), comme dans la boucl e 2 du
programme ci-après.
Mais si quelqu'un a mieux à proposer, genre un mot magique donnant
l'index en cours dans une boucle, je suis preneur.
Utilise enumerate :
py> liste = ['a','x','b','z']
py> for i, l in enumerate(liste):
... print 'index: %i, element: %s' % (i, l)
...
index: 0, element: a
index: 1, element: x
index: 2, element: b
index: 3, element: z
py>
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile , et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'in dex de l'élément courant (et donc de pouvoir calculer celui de n'impo rte quel autre élément) est un range(len(liste)), comme dans la boucl e 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur.
Utilise enumerate :
py> liste = ['a','x','b','z'] py> for i, l in enumerate(liste): ... print 'index: %i, element: %s' % (i, l) ... index: 0, element: a index: 1, element: x index: 2, element: b index: 3, element: z py>
-- Amand Tihon
Do Re Mi chel La Si Do
Bonsoir !
Comme l'a dit Armand Tihon :
for l,v in enumerate(liste): print 'boucle 3: l=',v,' l-1=',liste[l-1]
Ou, avec une variable :
prec=liste[-1] for l in liste: print 'boucle 4: l=',l,' l-1=',prec prec = l
@-salutations
MCI
Bonsoir !
Comme l'a dit Armand Tihon :
for l,v in enumerate(liste):
print 'boucle 3: l=',v,' l-1=',liste[l-1]
Ou, avec une variable :
prec=liste[-1]
for l in liste:
print 'boucle 4: l=',l,' l-1=',prec
prec = l
for l,v in enumerate(liste): print 'boucle 3: l=',v,' l-1=',liste[l-1]
Ou, avec une variable :
prec=liste[-1] for l in liste: print 'boucle 4: l=',l,' l-1=',prec prec = l
@-salutations
MCI
jean-michel
Amand Tihon wrote:
Utilise enumerate :
py> liste = ['a','x','b','z'] py> for i, l in enumerate(liste): ... print 'index: %i, element: %s' % (i, l) ... index: 0, element: a index: 1, element: x index: 2, element: b index: 3, element: z py>
Sympa , je prends ! Merci, c'est cool ! A+ jm
Amand Tihon wrote:
Utilise enumerate :
py> liste = ['a','x','b','z']
py> for i, l in enumerate(liste):
... print 'index: %i, element: %s' % (i, l)
...
index: 0, element: a
index: 1, element: x
index: 2, element: b
index: 3, element: z
py>
py> liste = ['a','x','b','z'] py> for i, l in enumerate(liste): ... print 'index: %i, element: %s' % (i, l) ... index: 0, element: a index: 1, element: x index: 2, element: b index: 3, element: z py>
Sympa , je prends ! Merci, c'est cool ! A+ jm
Bruno Desthuilliers
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après.
liste= ['a','x','b','z'] for i, l in enumerate(liste): try: lm = liste[i-1] except IndexError: lm = 'None' print 'boucle 3: l=%s - l-1=%s' % (l, lm)
Bonsoir,
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et
agréable d'accéder à l'élément n-1 si l'élément courant est n.
J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index
de l'élément courant (et donc de pouvoir calculer celui de n'importe
quel autre élément) est un range(len(liste)), comme dans la boucle 2 du
programme ci-après.
liste= ['a','x','b','z']
for i, l in enumerate(liste):
try:
lm = liste[i-1]
except IndexError:
lm = 'None'
print 'boucle 3: l=%s - l-1=%s' % (l, lm)
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après.
liste= ['a','x','b','z'] for i, l in enumerate(liste): try: lm = liste[i-1] except IndexError: lm = 'None' print 'boucle 3: l=%s - l-1=%s' % (l, lm)
Yermat
jean-michel wrote:
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Attention avec les solutions que vous avez eu. Elles peuvent en effet avoir une très mauvaise complexité algorithmique. L'accès au ième élément est une opération complexe !
Si vous voulez juste avoir accès à l'élément précédent, il vaut mieux vous construire un itérateur ou un générateur qui fasse cela en temps constant.
def SuiteIt(it): ... prev = None
... for item in it: ... yield (prev, item) ... prev = item ...
for (prev, cur) in SuiteIt(range(10)): ... print "The predecessor of ", cur, "is", prev
... The predecessor of 0 is None The predecessor of 1 is 0 The predecessor of 2 is 1 The predecessor of 3 is 2 The predecessor of 4 is 3 The predecessor of 5 is 4 The predecessor of 6 is 5 The predecessor of 7 is 6 The predecessor of 8 is 7 The predecessor of 9 is 8
-- Yermat
jean-michel wrote:
Bonsoir,
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et
agréable d'accéder à l'élément n-1 si l'élément courant est n.
J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index
de l'élément courant (et donc de pouvoir calculer celui de n'importe
quel autre élément) est un range(len(liste)), comme dans la boucle 2 du
programme ci-après.
Mais si quelqu'un a mieux à proposer, genre un mot magique donnant
l'index en cours dans une boucle, je suis preneur.
A+
jm
liste= ['a','x','b','z']
for l in liste:
print 'boucle 1: l=',l,' l-1 est inconnu'
for l in range(len(liste)):
print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Attention avec les solutions que vous avez eu. Elles peuvent en effet
avoir une très mauvaise complexité algorithmique. L'accès au ième
élément est une opération complexe !
Si vous voulez juste avoir accès à l'élément précédent, il vaut mieux
vous construire un itérateur ou un générateur qui fasse cela en temps
constant.
def SuiteIt(it):
... prev = None
... for item in it:
... yield (prev, item)
... prev = item
...
for (prev, cur) in SuiteIt(range(10)):
... print "The predecessor of ", cur, "is", prev
...
The predecessor of 0 is None
The predecessor of 1 is 0
The predecessor of 2 is 1
The predecessor of 3 is 2
The predecessor of 4 is 3
The predecessor of 5 is 4
The predecessor of 6 is 5
The predecessor of 7 is 6
The predecessor of 8 is 7
The predecessor of 9 is 8
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Attention avec les solutions que vous avez eu. Elles peuvent en effet avoir une très mauvaise complexité algorithmique. L'accès au ième élément est une opération complexe !
Si vous voulez juste avoir accès à l'élément précédent, il vaut mieux vous construire un itérateur ou un générateur qui fasse cela en temps constant.
def SuiteIt(it): ... prev = None
... for item in it: ... yield (prev, item) ... prev = item ...
for (prev, cur) in SuiteIt(range(10)): ... print "The predecessor of ", cur, "is", prev
... The predecessor of 0 is None The predecessor of 1 is 0 The predecessor of 2 is 1 The predecessor of 3 is 2 The predecessor of 4 is 3 The predecessor of 5 is 4 The predecessor of 6 is 5 The predecessor of 7 is 6 The predecessor of 8 is 7 The predecessor of 9 is 8
-- Yermat
jean-michel
jean-michel wrote:
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Bonjour,
En synthèse, la solution que je préfère est celle avec enumerate (voir ci-après). Je trouve qu'elle est simple et a les mêmes possibilités que le range(len(liste)) en étant plus élégante. Et, dont acte, et elle est dans le tutorial (chap 5.6, looping techniques), comme la plupart des trucs importants. J'aurais mieux fait de le relire une fois de plus avant de poser la question. Et toc. Merci beaucoup de vos réponses. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1] for i,l in enumerate(liste): print 'boucle 3: l=',l,' l-1=',liste[i-1]
jean-michel wrote:
Bonsoir,
Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et
agréable d'accéder à l'élément n-1 si l'élément courant est n.
J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index
de l'élément courant (et donc de pouvoir calculer celui de n'importe
quel autre élément) est un range(len(liste)), comme dans la boucle 2 du
programme ci-après.
Mais si quelqu'un a mieux à proposer, genre un mot magique donnant
l'index en cours dans une boucle, je suis preneur.
A+
jm
liste= ['a','x','b','z']
for l in liste:
print 'boucle 1: l=',l,' l-1 est inconnu'
for l in range(len(liste)):
print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Bonjour,
En synthèse, la solution que je préfère est celle avec enumerate (voir
ci-après). Je trouve qu'elle est simple et a les mêmes possibilités que
le range(len(liste)) en étant plus élégante.
Et, dont acte, et elle est dans le tutorial (chap 5.6, looping
techniques), comme la plupart des trucs importants. J'aurais mieux fait
de le relire une fois de plus avant de poser la question. Et toc.
Merci beaucoup de vos réponses.
A+
jm
liste= ['a','x','b','z']
for l in liste:
print 'boucle 1: l=',l,' l-1 est inconnu'
for l in range(len(liste)):
print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
for i,l in enumerate(liste):
print 'boucle 3: l=',l,' l-1=',liste[i-1]
Bonsoir, Lorsque l'on boucle sur une liste, il est parfois nécessaire, utile, et agréable d'accéder à l'élément n-1 si l'élément courant est n. J'ai toujours tenu pour acquis que la seule méthode pour avoir l'index de l'élément courant (et donc de pouvoir calculer celui de n'importe quel autre élément) est un range(len(liste)), comme dans la boucle 2 du programme ci-après. Mais si quelqu'un a mieux à proposer, genre un mot magique donnant l'index en cours dans une boucle, je suis preneur. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1]
Bonjour,
En synthèse, la solution que je préfère est celle avec enumerate (voir ci-après). Je trouve qu'elle est simple et a les mêmes possibilités que le range(len(liste)) en étant plus élégante. Et, dont acte, et elle est dans le tutorial (chap 5.6, looping techniques), comme la plupart des trucs importants. J'aurais mieux fait de le relire une fois de plus avant de poser la question. Et toc. Merci beaucoup de vos réponses. A+ jm
liste= ['a','x','b','z'] for l in liste: print 'boucle 1: l=',l,' l-1 est inconnu' for l in range(len(liste)): print 'boucle 2: l=',liste[l],' l-1=',liste[l-1] for i,l in enumerate(liste): print 'boucle 3: l=',l,' l-1=',liste[i-1]
Rakotomandimby (R12y) Mihamina
jean-michel :
Je trouve qu'elle est simple
Non, Yermat vient d'annoncer qu'il faut s'attendre à ce que ce soit "complexe", justement... Donc pas si "simple" que ça...
Quel jeu de mot!...
jean-michel <jmbc@nospam.fr> :
Je trouve qu'elle est simple
Non, Yermat vient d'annoncer qu'il faut s'attendre à ce que ce soit
"complexe", justement... Donc pas si "simple" que ça...
Non, Yermat vient d'annoncer qu'il faut s'attendre à ce que ce soit "complexe", justement... Donc pas si "simple" que ça...
Quel jeu de mot!...
Oui, oui, mais je préfère la solution simple qui est complexe, que la
solution compliquée mais en fait plus simple... Allez, un aspro, une tisane et au lit...
Do Re Mi chel La Si Do
'soir !
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une dé-simplification de la simple expression d'un besoin tout simple, et de solutions simples, mais dévalorisées, au profit d'une solution dont la complexité est simplement plus abstraite.
En fait,la complexité est plus dans l'oeil du lecteur, que sous la plume du développeur.
@-salutations
Michel Claveau
'soir !
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une
dé-simplification de la simple expression d'un besoin tout simple, et de
solutions simples, mais dévalorisées, au profit d'une solution dont la
complexité est simplement plus abstraite.
En fait,la complexité est plus dans l'oeil du lecteur, que sous la plume du
développeur.
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une dé-simplification de la simple expression d'un besoin tout simple, et de solutions simples, mais dévalorisées, au profit d'une solution dont la complexité est simplement plus abstraite.
En fait,la complexité est plus dans l'oeil du lecteur, que sous la plume du développeur.
@-salutations
Michel Claveau
bruno at modulix
Do Re Mi chel La Si Do wrote:
'soir !
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une dé-simplification de la simple expression d'un besoin tout simple, et de solutions simples, mais dévalorisées, au profit d'une solution dont la complexité est simplement plus abstraite.
Ah, pas mal là !-) Tu a pris des cours ?
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Do Re Mi chel La Si Do wrote:
'soir !
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une
dé-simplification de la simple expression d'un besoin tout simple, et de
solutions simples, mais dévalorisées, au profit d'une solution dont la
complexité est simplement plus abstraite.
Ah, pas mal là !-)
Tu a pris des cours ?
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb@xiludom.gro'.split('@')])"
Mais la complexité de la réponse qui contient le mot "complexe" entraîne une dé-simplification de la simple expression d'un besoin tout simple, et de solutions simples, mais dévalorisées, au profit d'une solution dont la complexité est simplement plus abstraite.
Ah, pas mal là !-) Tu a pris des cours ?
-- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"