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 :

Créer une list comprehension


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut Créer une list comprehension
    Bonsoir a tous,
    Je suis tout nouveau sur le forum, c'est la premiere fois que je publie et vous remercie deja pour toutes les précieuses aides que j'ai pu avoir grace a ce site.
    Voila, je démarre en python, et je bloque sur un exercice.
    En réalité le code que j'ai mis en place fonctionne, mais a partir du moment ou j'ai un nombre extrêmement élevé de valeurs a prendre en compte ( de l'orde de 10**4 minimum) la console m'affiche un message d'erreur spécifiant que la compilation est terminée due a un trop long temps de compilation.
    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
    16
    import random
    import math
     
    num=[random.randint(1,10**4) for i in range(10**5)]
    k= random.randrange(10**7)
    print("le nombre de coupe est de {}".format(k))
    print("le tableau de base est {}".format(num))
    while k!=0:
        a=max(num)
        pos=num.index(a)
        b=math.ceil(a/2)
        num[pos]=b
        k=k-1
    print("le nouveau tableau est {}".format(num))
    somme=sum(num)
    print("la somme est de {}".format(somme))
    Celui a pour but de créer un tableau dans lequel il y a un nombre de valeurs compris entre 0 et 10^5, et ou chacune des valeur vaut entre 1 et 10**4.
    On définit un nombre k qui signifie le nombre de fois ou on va diviser un nombre du tableau par 2.
    Ex: num=[4,5,7,9]
    k=2
    Le 1e chiffre : on prend le chiffre 9 qu'on divise par 2, le résultat obtenue arrondi a l'entier supérieur remplace le chiffre en question
    Le 2e Chiffre: on prend le chiffre 7 qu'on divise par 2, le résultat obtenue arrondi a l'entier supérieur remplace le chiffre en question
    Les deux coupes ( correspondant a k=2) ont été faites.
    On calcul la somme des valeurs du tableau.
    Le but de l'exercice est d'obtenir la somme la plus petite

    Mon problème est donc que des qu'on passe dans des nombres extrêmement élevé la machine ne me donne plus de résultat.
    J'ai entendu parler de list comprehension mais je n'ai pas réussi a en créer.
    Si quelqu'un peut me donner un coup de main pour le réaliser ou une idée je suis preneur

    Désolé par avance pour le long bloc

    Bonne soirée a tous

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Une seule question,

    Quel est l'intérêt d'afficher une liste de 100 000 valeurs ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut
    Il n'y a pas spécialement d'intérêt.
    C'est une des conditions de l'exercice que j'essaye de resoudre

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    S'il n'y a pas d'intérêt alors ne le fait pas ! Surtout que cette partie est sans doute celle qui bloque ton programme...

    Affiche juste la somme et ça devrait aller.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 7
    Par défaut
    J'ai retenté sans l'affichage des tableaux, mais le résultat reste identique.
    Le message d'erreur est :
    Compiler message:
    Terminated due to timeout

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Le message d'erreur est:
    "
    Compiler message:
    Terminated due to timeout
    "
    À quel endroit exactement ?

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par yaya793 Voir le message
    J'ai entendu parler de list comprehension mais je n'ai pas réussi a en créer.
    Si tu as un souci de taille et que Python ne peut plus étaler, les listes par compréhension ne solutionneront pas ton problème car c'est toujours Python qui bosse.

    Les listes par intension (ou par compréhension, les deux termes sont autorisés) permettent de créer des listes à la volée à partir d'un itérable en entrée.
    Exemple:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    b=[x**2 for x in a]
    Ici b est créé comme prenant chaque élément de a mis au carré. Ca remplace en fait l'écriture classique
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    b=[]
    for x in a: b.append(x**2)

    On peut ausi écrire b=[x**2 for x in range(10)] pour montrer que l'entrée n'est pas nécessairement un tableau mais peut aussi être n'importe quel truc pourvu qu'il soit itérable. Mais c'est juste un raccourci d'écriture, pas un gain de mémoire ou de performances.
    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]

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  2. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  3. Réponses: 3
    Dernier message: 20/02/2006, 18h32
  4. [EXCEL]Créer une liste (combo)
    Par elitost dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/12/2005, 16h55
  5. Réponses: 5
    Dernier message: 29/09/2005, 14h37

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