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 :

Itération boucle for [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 45
    Par défaut Itération boucle for
    Bonjour,

    Je travail avec pandas pour ouvrir un fichier excel et récupérer les mots présents dans le fichier. L'idéal est de stocker tous les mots d'une colonne dans chaque index ma liste 'mot'. Je n'arrive pas à faire cela. Par exemple si je print(mot[0]), j'obtiens tous les mots de la première colonne. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import pandas as pd
    df=pd.read_excel('mots.xlsx', keep_default_na=False)
     
    Titres=list(df.columns)
    print(len(Titres))
     
    mot=list()     
    for i in range(0,len(Titres)-1):
        print(i)
        mot.insert(i,list(df[Titres[i]]))
    print(mot)
     
    2
    0
    [['Bol bleu', 'bol rouge', 'bol vert']]
    On dirait que l'itération ne vas pas jusqu’à i=1 et je ne comprends pas pourquoi ?


    je viens de comprendre ! mon problème était l'argument de la fonction range qui était faux.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Suntory Voir le message
    On dirait que l'itération ne vas pas jusqu’à i=1 et je ne comprends pas pourquoi ?
    Parce que len(Titres) vaut 2 (c'est ce qui est affiché en ligne 13 de ton exemple) donc len(Titres) - 1 vaut 1 (enfin je crois) et que range(x, y) part de x inclus jusqu'à y exclu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 41
    Par défaut
    L'utilisation des range peut être une galère dans les bouclages sur les listes.

    Je préfère personnellement :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    titres = [['Bol bleu', 'bol rouge', 'bol vert'], ['assiette verte', '', '']]
    lstMots = []
    for titre in titres:
        for motTitre in titre:
            if motTitre not in lstMots and motTitre:
                lstMots.append(motTitre)
    print(lstMots)

    Le if permet d'éviter les doublons et les mots vides, à voir si c'est ce que tu veux faire.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jmbain Voir le message
    if motTitre not in lstMots and motTitre
    Dans ce cas, autant utiliser un ensemble et une liste en intension pour simplifier le test...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    titres = [['Bol bleu', 'bol rouge', 'bol vert'], ['assiette verte', '', '']]
    lstMots = set()
    for titre in titres:
        for motTitre in (x for x in titre if x):
            lstMots.add(motTitre)
    print(lstMots)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 41
    Par défaut
    Bien vu...
    Et en plus, ce sera théoriquement plus rapide

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

Discussions similaires

  1. Passer à l'itération suivante d'une boucle for
    Par kariboubou dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/05/2011, 14h23
  2. boucle for qui remplit deux cellules à chaque itération
    Par free_dom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/04/2011, 16h53
  3. boucle for itération incohérrente
    Par Jerome2606 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/12/2010, 09h35
  4. Réponses: 8
    Dernier message: 01/06/2010, 11h43
  5. [Débutant] Changez l'indice d'itération dans une boucle for
    Par lekev62 dans le forum MATLAB
    Réponses: 5
    Dernier message: 18/11/2009, 14h16

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