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 :

Problème de tri tableau à 2 dimensions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Tchicken
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Août 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Août 2017
    Messages : 108
    Par défaut Problème de tri tableau à 2 dimensions
    Bonjour à tous,

    j'ai un soucis, je n'arrive pas à comprendre le tri du module operateur :

    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
    from operator import itemgetter
    # Initialisation du tableau BasesX de 21 colonnes et 20 lignes 
    # BasesX = [[0 for i in range(21)] for j in range(20)]
    BasesX = [[0] * 21 for _ in range(20)]
    for i in range(0,20):
        BasesX[i][0] = i + 1
        BasesX[i][1] = i + 1
        BasesX[i][2] = i + 1
        BasesX[i][3] = i + 1
        BasesX[i][4] = i + 1    
    for i in range(0,20):
        BasesX[i][5] = 20 - i
        BasesX[i][6] = 20 - i
        BasesX[i][7] = 20 - i
        BasesX[i][8] = 20 - i
        BasesX[i][9] = 20 - i
    for i in range(0,20):
        print(BasesX[i])
    sorted(BasesX, key=itemgetter(0), reverse=True)
    print(" ")
    for i in range(0,20):
        print(BasesX[i])
    sorted(BasesX, key=itemgetter(5), reverse=True)
    print(" ")
    for i in range(0,20):
        print(BasesX[i])
    avec ce code, ça ne tri rien ! ci-dessous le résultat :

    [1, 1, 1, 1, 1, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 3, 3, 3, 3, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [4, 4, 4, 4, 4, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [5, 5, 5, 5, 5, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [6, 6, 6, 6, 6, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [9, 9, 9, 9, 9, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [13, 13, 13, 13, 13, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [14, 14, 14, 14, 14, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [15, 15, 15, 15, 15, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [16, 16, 16, 16, 16, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [17, 17, 17, 17, 17, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [18, 18, 18, 18, 18, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [20, 20, 20, 20, 20, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    [1, 1, 1, 1, 1, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 3, 3, 3, 3, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [4, 4, 4, 4, 4, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [5, 5, 5, 5, 5, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [6, 6, 6, 6, 6, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [9, 9, 9, 9, 9, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [13, 13, 13, 13, 13, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [14, 14, 14, 14, 14, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [15, 15, 15, 15, 15, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [16, 16, 16, 16, 16, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [17, 17, 17, 17, 17, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [18, 18, 18, 18, 18, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [20, 20, 20, 20, 20, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    [1, 1, 1, 1, 1, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [3, 3, 3, 3, 3, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [4, 4, 4, 4, 4, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [5, 5, 5, 5, 5, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [6, 6, 6, 6, 6, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [8, 8, 8, 8, 8, 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [9, 9, 9, 9, 9, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [13, 13, 13, 13, 13, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [14, 14, 14, 14, 14, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [15, 15, 15, 15, 15, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [16, 16, 16, 16, 16, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [17, 17, 17, 17, 17, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [18, 18, 18, 18, 18, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [20, 20, 20, 20, 20, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    merci de votre aide.
    Tchicken

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    retourne une liste trié sans modifié X.
    trie X et le modifie sur place.

    Donc si vous écrivez juste
    il ne se passe rien. Soit il faut récupérer le résultat
    et regarder Y, soit utiliser

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tchicken Voir le message
    Bonjour à tous,
    Bonjour à toi...

    Citation Envoyé par Tchicken Voir le message
    j'ai un soucis, je n'arrive pas à comprendre le tri du module operateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i in range(0,20):
        print(BasesX[i])
    sorted(BasesX, key=itemgetter(0), reverse=True)
    print(" ")
    for i in range(0,20):
        print(BasesX[i])
    sorted(BasesX, key=itemgetter(5), reverse=True)
    avec ce code, ça ne trie rien !
    Sisi (impératrice), sorted() trie parfaitement. Encore faut-il que tu récupères le truc trié qu'elle te renvoie...

    Quand tu as un tableau à trier (ex tab=range(20, 0, -1)), et que tu veux trier le tableau, t'as deux possibilités
    1. soit tu invoques la méthode sort() sur le tableau (ex tab.sort())=> il sera alors modifié et trié "sur place"
    2. soit tu invoques la fonction globale sorted() à laquelle tu passes le tableau à trier (ex sorted(tab))=> la fonction retourne un nouveau tableau (qu'il faut alors récupérer) sans toucher au tableau d'origine
    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]

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

Discussions similaires

  1. tri tableau à 2 dimensions
    Par pfovez dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/12/2008, 14h51
  2. Tri tableau 2 dimensions
    Par mmb04 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/11/2007, 09h39
  3. [langage] [debutant] tri tableau deux dimensions
    Par labbyjoel dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2006, 18h38
  4. problème avec un tableau à plusieurs dimensions
    Par lelutin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/09/2006, 12h05
  5. Réponses: 5
    Dernier message: 24/05/2006, 08h59

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