Trie avancée dans une liste imbriquée sans sort()

Trie avancée dans une liste imbriquée sans sort() [PERL] Trier éléments d'un tab SANS sort (Résolu) Liste déroulante sans tri Relier son pc a la tv sans sortie vidéo (Résolu) PC portable sans sortie vidéo (Résolu) Tri personnalise sous acces : liste (Résolu)

Bonjour, je suis nouveau et j'aurais besoin d'aide sur une fin de projet, j'ai actuellement une fonction qui me trie une liste suivant l'age inverse des personnes grace a la fonction sorted depuis une liste imbriquée (1 liste dans l'autre), toutefois je voudrais le faire sans utiliser des fonctions de type sort ou sorted.

C'est a dire qu'en clair je voudrais le faire a la main, sans que "sort" n'apparaisse :)



La partie concernée est celle-ci :


from datetime import datetime
lst = [['WILSON', 'MIKE', 'H', '26/06/1950'], ['EMERIC', 'JAMES', 'H', '27/06/1960'], ['MOPAL', 'ARTHUR', 'H', '27/06/1966']]
def agepersonne():
print(sorted(lst, key=lambda item: datetime.strptime(item[3], '%d/%m/%Y'), reverse=True))
agepersonne()



Au final le résultat est celui-ci :



[['MOPAL', 'ARTHUR', 'H', '27/06/1966'],
['EMERIC', 'JAMES', 'H', '27/06/1960'],
['WILSON', 'MIKE', 'H', '26/06/1950']]

Ce qui est tout a fait correct par rapport a ce que je souhaite, sauf que je n'arrive pas a le faire " a la main... " .
Si une personne peut m'aider merci..
            

Forum

Trie avancée dans une liste imbriquée sans sort() [PERL] Trier éléments d'un tab SANS sort (Résolu) Liste déroulante sans tri Relier son pc a la tv sans sortie vidéo (Résolu) PC portable sans sortie vidéo (Résolu) Tri personnalise sous acces : liste (Résolu)

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonsoir,

Je suppose que si tu souhaites créer ta propre fonction de tri, c'est dans un but pédagogique, de ce fait te fournir du code tout fait ne servirait donc à rien.
Maintenant des algorithmes de tri il en existe beaucoup.
https://fr.wikipedia.org/wiki/Algorithme_de_tri

Le plus commun et sans doute le plus simple à mettre en oeuvre est le tri par insertion.
https://fr.wikipedia.org/wiki/Tri_par_insertion

Tu sais comment trier tes dates, tu n'auras donc juste besoin pour créer ton implémentation de tri que des méthodes insert et append de list.

Reply
réponses:
  • auteur

    //Modif du code avec suppression des / entre les chiffres //
    Je comprends le principe du programme qui a pour but de placer "une date" en fonction des autres, pour cela il analyse la liste afin de placer "une date" au bon endroit afin de garder la liste triée a chaque ajout.





    L = [['WILSON', 'MIKE', 'H', '19700626'], ['EMERIC', 'JAMES', 'H', '19670626'], ['MOPAL', 'ARTHUR', 'H', '19660627']]
    def trie(L):
    for i in range(1, len(L)):
    temporaire=L[i]
    j = i - 1
    while j >=0 and L[j] > temporaire:
    L[j+1] = L[j]
    j -= 1
    L[j+1] = temporaire
    return L
    print(trie(L))



    Le résultat :


    [['EMERIC', 'JAMES', 'H', '19670626'], ['MOPAL', 'ARTHUR', 'H', '19660627'], ['WILSON', 'MIKE', 'H', '19700626']]



    Donc il a trié les personnes suivant leur nom dans un ordre alphabétique, j'ai essayé diverses méthodes pour enlever les [[',']] et faire un retour a la ligne après chaque personne mais sans succés..
    J'aurais aussi aimé enlever les informations après le prénom, afin d'avoir un résultat du type :



    EMERIC JAMES
    MOPAL ARTHUR
    WILSON MIKE




    Si vous savez comment faire je suis preneur..

    Et bien sur j'ai encore une fois essayer de comprendre comment gérer les dates mais je suis désolé ce n'est pas compréhensible pour ma part..
    Je n'ai pas d'idée comment m'en sortir avec une variable qui contient YYYYMMJJ..
    Merci

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed