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 :

Soustraire tous les éléments d'une liste


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Soustraire tous les éléments d'une liste
    Bonjour,

    j'étudie actuellement le Langage Python et je n'arrive pas à faire deux questions dans mes exercices à faire.
    En fait, je n'arrive pas à créer un code où on soustrait 1 à tous les éléments d'une liste. Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range (len(lst)):
            lst[i] -= 1
    print(lst)
    Et Python m'insulte en disant
    TypeError: object of type 'int' has no len() ??
    À vrai dire j'ai essayé plusieurs façons mais idem cela ne marche pas je ne comprends pas.
    S'il vous plaît veuillez m'éclairer.

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Ah bah moi aussi je débute...

    Je comprend du message d'erreur que la variable lst est de type int (integer) c'est-à-dire que c'est un nombre entier comme 7 par exemple... Or effectivement un entier n'a pas de longueur donc on ne peut pas utiliser la fonction len...

    Dans votre bout de code il manque la définition de lst, à priori il ne s'agit pas d'une liste d'entiers mais d'un entier...

    Par exemple j'ai testé ce code :

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lst =  [1,5,5,9]
     
    for i in range (len(lst)):
            lst[i] -= 1
    print(lst)

    Et cela fonctionne chez moi (j'obtiens : [0, 4, 4, 8]).

  3. #3
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Python vous dit que lst est un int(tier), et que les entiers n'ont pas de longueur

    comment déclarez vous lst ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    Alors tout d’abord merci pour vos réponses.
    Alors oui j’avais compris l’intitulé du message d’erreur mais je n’avais pas compris d’où il venait puisque j’ai fais comme beginner c’est à affecter ma liste : lst=[14,28,3,10]
    Puis j’ai ecris un code pour diviser en deux le dernier chiffre de la liste (q.1 et qui marchait) donc a la fin j’ai mis print(lst) et j’ai ecris le code for i in range...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par ilaomxp Voir le message
    Bonsoir,
    Alors tout d’abord merci pour vos réponses.
    Alors oui j’avais compris l’intitulé du message d’erreur mais je n’avais pas compris d’où il venait puisque j’ai fais comme beginner c’est à affecter ma liste : lst=[14,28,3,10]
    Puis j’ai ecris un code pour diviser en deux le dernier chiffre de la liste (q.1 et qui marchait) donc a la fin j’ai mis print(lst) et j’ai ecris le code for i in range...
    UPDATE : bon.. après reflexion j’ai choisi de réécrire la liste avant ce bout de code même si ma liste était déjà affectée bien avant.. Et cela fonctionne du coup
    Néanmoins, savez vous comme afficher tout les éléments de la liste sur des lignes différentes?

  6. #6
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    avec une boucle for, soit en passant par range soit en itérant directement sur votre liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for element in ma_liste:
        faire_quelque_chose(element)
     
     
    for index in range(len(ma_liste)):
            faire_quelque_chose(ma_liste[index])
    les deux codes sont équivalents

  7. #7
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par ilaomxp Voir le message
    Néanmoins, savez vous comme afficher tout les éléments de la liste sur des lignes différentes?
    Ce qui me vient à l'esprit ce serait simplement d'utiliser la fonction print pour chaque élément...

    EDIT : Je viens de tester cela par exemple :

    Code phyton : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lst =  [1,5,5,9]
     
    for i in range (len(lst)):
            lst[i] -= 1
    # print(lst)
     
    for element in lst:
        print(element)
    On peut aussi faire cela dans une seule boucle :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lst =  [1,5,5,9]
     
    for i in range (len(lst)):
            lst[i] -= 1
            print(lst[i])

  8. #8
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup!

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # avec une "compréhension de liste"
    # https://docs.python.org/fr/3/tutorial/datastructures.html#list-comprehensions
     
    datas = [x-1 for x in [1, 2, 3, 4, 5]]
     
    print(datas)  # [0, 1, 2, 3, 4]

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Je viens de tester le code de Daniel et ça marche bien...

    Je ne connaissais pas cette syntaxe... Je vois que Python a lui aussi ses particularités.

    PS : Merci pour le lien, je ne savais pas que tu connaissais Python...

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    [...] Je ne connaissais pas cette syntaxe... Je vois que Python a lui aussi ses particularités. [...]
    Il ne faut pas hésiter à fouiller, tous les jours, la documentation officielle et les ressources de DVP.
    Même de vieux tutoriels peuvent vous apprendre quelque chose.

    @Beginner : je suis débutant depuis quelques mois, mais malheureusement je n'ai pas beaucoup de temps à y consacrer. Je trouve ce langage et ses "piles incluses" très bien pensés et réalisés. En contrepartie de ces qualités et possibilités, il y a une foule de choses à apprendre. Je suis certain que je ne m'approcherai pas du niveau des personnalités de ce forum avant de mourir.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  12. #12
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Si vous avez du temps pourriez-vous m'aider sur une autre question s'il vous plait? ca parle des listes, c'est un peu plus compliqué mais plus fun!
    Voilà le lien : https://www.developpez.net/forums/d2.../#post11163266

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Beginner. Voir le message
    Je ne connaissais pas cette syntaxe... Je vois que Python a lui aussi ses particularités.
    Ce sont les "listes en intension". Une écriture s'inspirant de l'écriture des ensembles mathématiques et qui permet de créer une liste2 directement depuis une liste1 en y implémentant éventuellement des modifications et des tests sur les éléments. Et ce n'est pas spécifique à Python (je veux dire par là que la notion existe dans la théorie des langages et que Python ne fait que l'implémenter comme d'autres langages l'implémentent aussi peut-être).
    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]

  14. #14
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    @ Daniel, ok merci et bon courage pour la suite...

    @ Sve@r, merci pour l'info, je vais regarder ces listes en intension de plus prés...

  15. #15
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    une autre façon d'écrire toujours la même chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def func(x):
       return x-1
     
    list(map(func, lst))

  16. #16
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Merci BufferBob, c'est bon à savoir...

  17. #17
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def func(x):
       return x-1
     
    list(map(func, lst))
    list(map(lambda x: x-1, lst))
    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]

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    mon grain de sel...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import numpy as np
    >>> ar = np.array(range(1, 6))
    >>> ar
    array([1, 2, 3, 4, 5])
    >>> ar = ar - 1
    >>> ar
    array([0, 1, 2, 3, 4])
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [Études] Liste de toutes les formations info
    Par Le Marlou dans le forum Etudes
    Réponses: 74
    Dernier message: 04/03/2021, 12h09
  2. Afficher toutes les éléments de la liste
    Par dalitobs dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/04/2016, 15h17
  3. Réponses: 3
    Dernier message: 16/04/2014, 20h45
  4. [SQL Server]La liste de toutes les tables
    Par Husqvarna dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/09/2008, 16h21
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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