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 liste à N valeurs [Python 2.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Créer une liste à N valeurs
    Bonjour,

    Je précise que je n'ai aucune connaissances en Python, juste un peu de VBA, et donc je ne connais pas les subtilités de ce langage, malheureusement on me demande de l'utiliser sans formation préalable.

    J'ai eu beau chercher sur des sites anglais, français, impossible de trouver comment faire ce que je veux (presque tout le temps, je tombe sur des sujets où les listes ne comportent que des dizaines de valeurs). Je dois tracer une courbe d'évolution d'un paramètre en fonction de la hauteur d'une pièce. J'ai donc besoin de deux listes, Hauteur et Paramètre.
    La hauteur de la pièce est étudiée en pourcentage, j'ai donc créé la liste suivante :
    Hauteur = range(0,101)

    Le paramètre que j'étudie ne varie que lorsque nous sommes proches des 90%, ainsi sa valeur est constante de 0 à 90. C'est pour cette liste que je bute. Dans un premier temps, nous pouvons considérer que nous aurons :
    De 0% à 90% (91 valeurs) : paramètre = 10
    De 90% à 100% (10 valeurs) : paramètre = 20

    Bien évidemment, ce ne sont pas les bonnes valeurs, mais je pense qu'en cherchant bien après je pourrais me débrouiller seule. Mais pour la création de la liste, je sèche. Je pensais qu'on pourrait utiliser la fonction np.ones, et ensuite une boucle pour modifier les valeurs en fonction de leur position dans la liste, mais impossible de trouver comment faire, de plus je ne sais pas comment importer numpy sur mon pc perso (je vous le dis, je débute vraiment...) et donc sur mon pc je ne peux pas tester ce code.

    Merci d'avance pour votre aide, et bonne journée !

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Puisque personne ne répond, je suggère ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    L = []
    for p in range(0, 101):
        if p <= 90:
            L.append(10)
        else:
            L.append(20)
    Ce qui donne la liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]
    Exemple d'accès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L[52] => 10
    L[95] => 20
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut.

    En tout premier lieu, je pense qu'il serait bon pour toi de prendre quelques heures pour étudier les bases du langages en lisant en français le tuto de Swinnen par exemple. http://python.developpez.com/cours/TutoSwinnen/. ça va beaucoup t'aider.

    Pour revenir au sujet qui t'intéresses, tu peux générer une première "liste" de valeurs (hauteurs) puis une seconde (parametres). Une liste et un "array" numpy c'est pas la meme chose. Tu n'es pas obligée de passer par numpy ici, mais on va quand meme l'utiliser si tu le desires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Creation de la liste hauteurs
    hauteurs = []
    for i in range(1, 101, 1):
        hauteurs.append(i)
    hauteurs = np.array(hauteurs)
    On commence par créer une liste vide qu'on rempli au fur et à mesure par la method append(). A la toute fin on transforme cette liste en numpy array (un vecteur). C'est moche et grossier mais facile à comprendre. On pourrait faire cela avec une liste en intention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hauteurs = np.array([i for i in range(1,101,1)])
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hauteurs = np.array(np.arange(1,101,1))
    Ensuite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #Creation de la liste parametres
    parametres = []
    for element in hauteurs:
        if element < 91:
            parametres.append(10)
        else:
            parametres.append(20)
    parametres = np.array(parametres)
    Dans le code ci-dessus, on commence par créer une vraie liste vide appellee parametres. On parcours via in boucle for tous les elements de hauteurs, si l'élément est inférieur strictement à 91 on va ajouter à parametres la valeur 10, sinon la valeur 20. Cette action est réalisée par la method append() des listes. A la fin, par soucis d'homogénéité, on transforme la liste hauteurs en numpy array (meme object que
    hauteurs. Là aussi on pourrait compacter tout ça, mais cette architecture est simple à comprendre.

    Tu peux ensuite tracer ton résultat grâce à la bibliothèque matplotlib:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import matplotlib.pyplot as plt
     
    fig = plt.figure(1)
    ax = fig.add_subplot(111)
     
    ax.plot(hauteurs, parametres, color='blue', label='Ce que tu veux')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    plt.legend(loc='upper right', prop={'size':11,})
    ax.set_title('Jolie graph')
    plt.grid()
    plt.show()
    Edit: grille par Tyrtamos

    J

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Tout d'abord je vous remercie tous les deux pour vos réponses. Julien N, le problème est que je dois faire ça assez rapidement dans le cadre d'un projet qui attend mon code pour pouvoir avancer, j'ai quelques bases (quelques...) du langage mais pas pour le reste, notamment les boucles. En fait je m'aide d'un fichier déjà existant, que j'ai du étudier, pour tracer des courbes.

    Bref, passons. Pour Numpy, c'est pas que je veux absolument l'utiliser, c'est que, dans le code qu'on m'a donné ils l'utilisaient (pour la fonction np.ones). Mon but est vraiment d'aller au plus simple.

    J'aime assez le fait de se caler sur la liste hauteur pour créer paramètre, cela peut éviter de modifier une liste et pas une autre (je risque d'avoir besoin de plus de 100 valeurs). Je vais donc utiliser le dernier code que vous avez écrit, en y intégrant ma condition sur le paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hauteur = np.arange(0,100.01,.01)
    pression = []
    for element in hauteur:
        if element < (100-Epad):
            pression.append(float(1))
        else:
            pression.append(float(pi2r/pi2))
    pression = np.array(pression)
    Je vous remercie pour votre aide, car cela m'a vraiment avancé dans mon travail.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Bonjour,

    Y'a pas de quoi. Désolé pour ma remarque sur la necessité de lire un tuto. Il faut dire qu'il y a beaucoup de questions posées ici qui ne le seraient pas si les tutos étaient lus. Dans un cadre professionnel, je comprends tout à fait le besoin de faire quelque chose vite sans avoir le temps d'approfondir (voir meme de découvrir).

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Pas de soucis, votre réflexion était pertinente, pendant ma recherche j'ai vu de nombreuses fois plusieurs personnes poser les mêmes questions.

    Je mets mon sujet en résolu, encore merci et bonne journée

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/08/2015, 13h00
  2. Comment créer une liste de valeur
    Par chawiken dans le forum IHM
    Réponses: 3
    Dernier message: 20/05/2008, 16h04
  3. Réponses: 2
    Dernier message: 23/04/2007, 15h26
  4. Réponses: 2
    Dernier message: 22/09/2006, 10h29
  5. créer une liste de valeurs autorisées pour un champ
    Par elitol dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/06/2006, 18h37

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