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 :

Regrouper en un ensemble les elements obtenus sequentiellement


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Regrouper en un ensemble les elements obtenus sequentiellement
    Bonsoir,

    Je reviens solliciter encore vos conseils .......J' ai pu grâce a vous récupérer les valeurs de mes éléments....mais ils sont éparpillés dans une séquence l' une a la suite de l' autre , ce qui m' empêche d' exploiter , pour la finalité de ma solution , les elements en question...Sachant que M est une matrice carree contenant des elements connus, et V un tableau contenant l' ensemble des indices des elements a recuperer Voila ce que j' ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    M=[[],[],[],[]]
    V=[]
     
    for t,z in V:
    			  print(t,z)
    			  print(M[t][z])
    			  L=M[t][z]
    			  print(L)
    Ce qui me renvoie cette solution :

    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    M=[[4, 5, 3, 2, 4], [1, 3, 3, 7, 2], [5, 1, 7, 6, 1], [5, 7, 3, 7, 3], [3, 4, 5, 3, 5]]
     
    V= [(0, 4), (0, 0), (0, 3), (1, 0), (1, 3), (2, 4), (2, 0), (2, 3)]
     
    0 4
    4
     
    0 0
    4
     
    0 3
    2
     
    1 0
    1
     
    1 3
    7
     
    2 4
    1
     
    2 0
    5
     
    2 3
    6
    Mais au vrai j' ai voulu récupéré les M[t][z] dans une liste (ou un tuple) quelconque du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    L=[4,4,2,1,7,1,5,6]
    Il m' est venu a l' idée de modifier mon code ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    M=[[],[],[],[]]
    V=[]
     
    for t,z in V:
    			  print(t,z)
    			  print(M[t][z])
    for k in len(V):
    			  L=M[t][z]
    			  print(L)
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    M=[[],[],[],[]]
    V=[]
    k=0
    for t,z in V:
    			  print(t,z)
    			  print(M[t][z])
    while k <len(V):
     
    			  L=M[t][z]
                              k=k+1
    			  print(L)

    Mais j' obtiens a peu pres le meme resultat

    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
    21
    22
    23
    24
    25
    26
     
     
    2 0
    8
    [8]
    2 1
    1
    [8]
    2 6
    6
    [8]
    3 1
    1
    [8]
    3 6
    6
    [8]
    4 0
    2
    [8]
    4 1
    8
    [8]
    4 6
    5
    [8]
    Une petite indication me serait d' un grand secours.

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    C' est curieux car j' arrive a partir d' une méthode similaire a formater une telle liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    import random
    	from random import randrange
    	V=[[0]*2 for _ in range(8)]
    	for i in range(len(V)):
    		V[i]=random.randrange(k)
    	print(V)
    C' est vrai qu' ici j' ai structuré le format de mon tableau......peut être que je devrai penser a faire la même chose...avec mes séquences de résultat.

    Je vais essayer a niuveau...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par integrale Voir le message
    Mais au vrai j' ai voulu récupéré les M[t][z] dans une liste (ou un tuple) quelconque du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    L=[4,4,2,1,7,1,5,6]
    Si c'est le cas, pourquoi écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for t,z in V:
        L=M[t][z]
    Plutôt que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = [M[t][z] for t,z in V ]
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    L = []
    for t,z in V:
        L.append(M[t][z])
    - W

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,

    Evidemment il y a une grande nuance entre les différentes écritures proposées . Dans mon cas j' ai d' abord voulu accéder aux indices (p,q) séparément pour pouvoir retrouver le contenu ..

    Et pour être honnête,je n' ai aps une vue d' ensemble de la façon de structurer ma démarche, j' essaie avec des solutions intuitives..et quand cela me torture, je viens vers vous.....


    Je vais essayer de voir ce que cela donne avec vos suggestions.

    Merci

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par integrale Voir le message
    Et pour être honnête,je n' ai aps une vue d' ensemble de la façon de structurer ma démarche, j'essaie avec des solutions intuitives..et quand cela me torture, je viens vers vous.....
    Rappelez vous que programmer, c'est définir une suite d'actions: faire ceci, puis cela,... qui devront être traduites en appels de fonctions auxquelles sont passés des paramètres et qui vont retourner des objets.
    Vous aurez fait un grand progrès si au prochain post, vous présentiez cela en disant:
    • je dois écrire une fonction qui extrait la liste de valeurs d'une matrice prises par une liste d'indices
    • j'ai écris la fonction "toto" que voici
    • mais lorsqu'on l'appelle avec matrice=... et indices=.... çà retourne "beurk" au lieu de...


    Intuitivement, çà donnerait une fonction du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def toto(matrix, indices):
        for t,z in indices:
    	  print(t,z)
    	  print(M[t][z])
    	  L=matrix[t][z]
    	  print(L)
         return L
    Pratiquement, çà ne peut pas fonctionner sans y raccrocher l'appelant, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    M=...
    V= ...
    L = toto(M, V)
    print (L)
    "toto" fonction introduit une abstraction qui masque les détails de la réalisation de l'action. Le code appelant devient plus court, ce qui aide à s'assurer de la cohérence de la suite des actions à réaliser. La fonction pourra être réalisée comme vous pouvez dans un premier temps et optimisée plus tard.

    Comme c'est une abstraction, il sera plus sage que son nom reflète l'action réalisée: "get_values" sera meilleur que "toto". matrix_filter serait peut être encore meilleur, mais il faudra prendre le temps de digérer la POO pour comprendre "pourquoi".

    Bon courage,
    - W

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

Discussions similaires

  1. comment regrouper les elements d'une liste déroulante à 3 niveaux ?
    Par razily dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/03/2012, 20h34
  2. [Tableaux] regrouper les elements d'un tableau
    Par ericmart dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2006, 10h35
  3. :xRecuperer les elements d'une listview
    Par hook85 dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/03/2005, 21h19
  4. [DIV] contenir les elements dans la balise div
    Par kemodo dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 11/10/2004, 21h43
  5. [VB6] [FileListBox] Récupérer les éléments sélectionnés
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 10h11

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