IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Opérations sur des morceaux de liste


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut Opérations sur des morceaux de liste
    Bonjour à tous,

    Débutant, (sinon je ne poserai pas cette question!), voici mon problème:
    Imaginons que j'ai une liste [jo,martine,bob,franck,thierry,charles,...] et que j'ai envi de réaliser une opération sur les 3 premiers de la liste, puis les trois seconds.J'imagine qu'il faut simplement faire une boucle mais je n'y arrive pas! Plus généralement , si j'ai une liste de n éléments, et que je doive appliquer une opération sur les 3 premiers éléments (jo*martine+bob par exemple) puis une autre opération sur les 3 suivants?

    Merci d'avance!!

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lst = ['jo', 'martine', 'bob', 'franck', 'thierry', 'charles']
    for nom in lst[:3]:
        print nom

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut
    Merci kango,

    Je vais un peu préciser ma pensée, je n'ai pas été très clair.En fait voila ce que je veux faire: j'ai un répertoire avec à l’intérieur des images (et je récupère les emplacements sous forme d'une liste, d'ou ma liste de nom tout à l'heure) Par exemple 9 images, et ce que je veux faire est d'appliquer une transformation sur les 3 premières puis sur les 3 secondes et enfin les 3 dernières(avec PIL je fais une fusion de ces 3 images ). Mais il faut que ce soit modifiable parce que il se peut que j'ai 16 images et que je doive les traiter 2 par 2, c'est a dire appliquer un correction sur les 2 premières puis les 2 deuxième etc..

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 725
    Par défaut
    Bonjour,

    len(lst)
    Pair ou impair ?

    @+

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Pour regrouper les éléments en tuples 3 par 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lst = zip(lst[::3],lst[1::3],lst[2::3])
    Cela donnera qqch comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [('jo', 'martine', 'bob'),('franck', 'thierry', 'charles')]
    Ensuite tu peux itérer dessus comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for item1, item2, item3 in lst:
         # action
    Attention toutefois, avec zip, si la longueur de la liste n'est pas un multiple de 3, le dernier tuple (incomplet) sera supprimé.

  6. #6
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Bonjour,
    Voila une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def list_coupe(listEntree,tailleSousList):
        listSortie=[]
        listTravail=[]
        for i,elmt in enumerate(listEntree):
            listTravail.append(elmt)
            if ( (i+1)%tailleSousList==0 and i!=0 ) or i+1==len(listEntree):
                listSortie.append(listTravail)
                listTravail=[]
        return listSortie
     
    lst = ['jo', 'martine', 'bob', 'franck', 'thierry', 'charles']
    print 2,list_coupe(lst,2)
    print 3,list_coupe(lst,3)
    print 5,list_coupe(lst,5)
    Elle donne la sortie suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2 [['jo', 'martine'], ['bob', 'franck'], ['thierry', 'charles']]
    3 [['jo', 'martine', 'bob'], ['franck', 'thierry', 'charles']]
    5 [['jo', 'martine', 'bob', 'franck', 'thierry'], ['charles']]
    A+

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    une fonction lambda devrait suffire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> groupe = lambda lst,n: [lst[i:i+n] for i in range(0,len(lst),n)]
    >>> 
    >>> lst = ['jo', 'martine', 'bob', 'franck', 'thierry', 'charles']
    >>> groupe(lst,2)
    [['jo', 'martine'], ['bob', 'franck'], ['thierry', 'charles']]
    >>> groupe(lst,3)
    [['jo', 'martine', 'bob'], ['franck', 'thierry', 'charles']]
    >>> groupe(lst,5)
    [['jo', 'martine', 'bob', 'franck', 'thierry'], ['charles']]
    >>> groupe(lst,12)
    [['jo', 'martine', 'bob', 'franck', 'thierry', 'charles']]

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Par défaut
    Merci à tous pour vos réponses! problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Opérations sur des dates
    Par loreleï85 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2006, 17h01
  2. opération sur des champs déjà manipulés
    Par fred23195 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 23/08/2006, 16h16
  3. [Dates] Question pour opérations sur des heures
    Par Sangdrax1604 dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2006, 11h07
  4. Opération sur des heures dans Excel
    Par mirascheat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2005, 10h34
  5. Votre avis sur des morceaux de resumes
    Par Asarnil dans le forum C++
    Réponses: 5
    Dernier message: 03/01/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo