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 :

[Liste] Tableau + extraction de valeurs.


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
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut [Liste] Tableau + extraction de valeurs.
    Bonjour,

    Dans le cadre de mes cours, je dois réaliser un exercice :

    J'utilise Python 3.7
    Créer un tableau avec "n" lignes et "p" colonnes et y inscrire les valeurs de 1 à n*p et lorsque l'on tape un nombre (élément du tableau) le programme doit retourner la ligne et la colonne de l'élément en question sans utiliser ni numpy, ni de structure conditionnelle.

    Voila ce que j'ai réalisé pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n = int(input("Entrez le nombre de lignes : "))
    p = int(input("Entrez le nombre de colonnes : "))
    T = [[j+1 for j in range(p)] for i in range(n)]
    print(T)
    Ceci me retourne pour n=5 et p=4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    n = int(input("Entrez le nombre de lignes : "))
    p = int(input("Entrez le nombre de colonnes : "))
    np = n * p + 1
    T = list(range(1, np))
    print(T)
    qui me retourne pour n=5 et p=4
    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, 17, 18, 19, 20]
    Mais je voudrais avoir un résultat tel que toujours en fonction de "n" et "p" :
    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], [17, 18, 19, 20]]
    Merci pour l'aide que vous m'apporterez.

    Doky.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> n, p = 5, 4
    >>> t = []
    >>> c = 1
    >>> for i in range(n):
    ...     s = []
    ...     for j in range(p):
    ...             s.append(c)
    ...             c += 1
    ...     t.append(s)
    ... 
    >>> t
    [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
    Pour l'écrire en une ligne, disons que ce sera le challenge du jour.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut
    Merci pour la réponse.

    Pourrais-je avoir une petite explication car avoir un code tout prêt c'est contre-productif

    Pour le fait d'inscrire le code en une ligne c'est un challenge ou c'est pas faisable ?

    Doky.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Je suis surpris, si tu sais écrire une list compréhension tu devrais comprendre mon code. Qui peut le plus peut le moins.

    Pour le challenge, c'est parce que j'ai essayé et que je n'ai pas trouvé.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 10
    Par défaut
    En fait, je connais tous les éléments de ton code mais je n'arrive pas à saisir le fonctionnement de celui-ci avec les ".append"

    Doky.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par Doky44 Voir le message
    En fait, je connais tous les éléments de ton code mais je n'arrive pas à saisir le fonctionnement de celui-ci avec les ".append"
    Pour le fun:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    n, p = 5, 4
    T = [ [ c*(n-1)+j for j in range(p)] for c, i in enumerate(range(n)) ]
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    pour le challenge j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> n,p = 5,4
    >>> [list(range(1,n*p+1)[i:i+p]) for i,j in enumerate(range(1,n*p+1)) if not i%p]
    [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
    ce qui est bien mais pas top.

    edit: arf, grillé par W.

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

Discussions similaires

  1. Extraction d'une liste à partir de la valeur d'une cellule
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2012, 20h07
  2. [XL-2010] Extraction de valeurs automatique et selon critère d'un tableau (220000 lignes)
    Par GuiBar18 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/10/2011, 16h35
  3. [Débutant] Recherche conditionelle et extraction de valeurs dans un tableau
    Par juliematlab dans le forum MATLAB
    Réponses: 10
    Dernier message: 10/05/2011, 16h36
  4. extraction de valeur d'un tableau
    Par joums dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2009, 09h45
  5. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h54

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