Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope
Python & Zope Forum d'entraide sur la programmation en Python et Zope. Avant de poster -> F.A.Q Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 14h27   #1
Bayard
Membre éprouvé
 
Avatar de Bayard
 
Inscription : juin 2002
Messages : 667
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 667
Points : 415
Points : 415
Par défaut Action sur le dernier élément

Bonjour,

Dans la structure qui suit, je souhaite faire une action uniquement sur le dernier élément.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Data= \
[\
  {\
   # Essai1
   "name":"A",\
   "type":"Cfg",\
   "par":"essai1"\
  },\
  {\
   # Essai2
   "name":"B",\
   "type":"Cfg",\
   "par":"essai2"\
  },\
  {\
   # Essai3
   "name":"C",\
   "type":"Cfg",\
   "par":"essai3"\
  },\
]  
 
for item in Data:
  # Action sur le dernier
  print(item)
Je n'ai pas l'information dans ma boucle pour avoir quel est le dernier élément.
Merci de ne pas me souffler de mettre un nombre "en dur"...
__________________
Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.
Bayard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 14h43   #2
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
Bonjour

Citation:
Envoyé par Bayard
Je n'ai pas l'information dans ma boucle pour avoir quel est le dernier élément.
Sauf si tu boucles sur enumerate():

Code :
1
2
3
4
for i, item in enumerate(Data):
    if i == len(Data)-1:
        # code spécifique au dernier élément
    print(item)
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 15h00   #3
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 608
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 608
Points : 3 715
Points : 3 715
Bonjour,

Pourquoi l'itération si seul le dernier élément importe ? (Data[len(Data)-1])

@+
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 15h11   #4
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 494
Points : 893
Points : 893
Citation:
Pourquoi l'itération si seul le dernier élément importe ? (Data[len(Data)-1])
La "chose" à faire ne concerne pas forcément le dernier élément, mais un "truc" à faire (affichage ? autre ?) quand on atteint le dernier, quel qu'il soit. Enfin, peut-être.

Mais bon, ce n'est qu'une hypothèse.
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 15h26   #5
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 608
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 608
Points : 3 715
Points : 3 715
Ma fois... Dans ce cas enumerate seras sans doute plus idiomatique qu'un
Code :
1
2
3
4
5
>>> datalen = len(Data)-1
>>> for item in Data:
...     if not datalen:
...         print(item)
...     datalen -= 1
Ou tout try sur le StopIteration puisque nous n'avons pas d'objet externe.
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 15h34   #6
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 608
Détails du profil
Informations personnelles :
Nom : Homme Patrice BLANGARIN
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien Help Desk, maintenance, réseau, système et +
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2006
Messages : 2 608
Points : 3 715
Points : 3 715
Citation:
Envoyé par PauseKawa Voir le message
Ou tout try sur le StopIteration
Ceci dit
Code :
1
2
3
for item in data:
    # dostuf
# item contient le dernier élément
__________________
Merci d'utiliser le forum pour les questions techniques.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 17h53   #7
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 670
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 670
Points : 722
Points : 722
Citation:
Envoyé par PauseKawa Voir le message
Ceci dit
Code :
1
2
3
for item in data:
    # dostuf
# item contient le dernier élément
c'est aussi ce que j'aurai dit dans le cas où l'action se fait après le #dostuff, or d'après l'exemple du PO ce n'est pas le cas.

pourquoi pas une boucle while

Code :
1
2
3
4
5
while data:
    item = data.pop(0)
    if not data:
         #action sur le dernier
    #dostuff
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h42.


 
 
 
 
Partenaires

Hébergement Web