Re: [Python-Fr] Publication de modification d'une liste

Page principale

Répondre à ce message
Auteur: Frédéric Mantegazza
Date:  
À: ML Guilde
Sujet: Re: [Python-Fr] Publication de modification d'une liste
Le Mercredi 14 Décembre 2005 13:56, Kaladan a écrit :

> Le mercredi 14 décembre 2005 à 13:50 +0100, Alexandre Fayolle a écrit :


> > Il me semble que le module difflib de la bibliothèque standard peut
> > être utilisé pour ça. La classe SequenceMatcher doit pouvoir être
> > utilisée pour produire ce genre de choses.
> >
> Tu peux aussi t'amuser à l'écrire mais si difflib le fait !
> [...]
> [1, 2, 3, 4]
> [1, 2, 3, 4, 0]
> [0, 2, 3, 4, 0]
> [0, 3, 4, 0]
> {'setitem': [(0, 0)], 'delitem': [1], 'append': [0]}


difflib ou ton exemple (l'utilisation des __delitem__ et autre est
astucieux) semble répondre à mon problème. Encore que tu ne gères pas les
insert, si ?

Le seul soucis, c'est comment, ensuite, reconstruire la liste de départ ? Il
va falloir que j'envoie les éléments qui ont été insérés ou ajoutés, ainsi
que la liste des ceux qui sont supprimés. Mais dès que je vais appliquer
une des transformations, par exemple la suppression, tous les indices se
retrouvent dans les choux...

l1 = [1,2,3,4,5,6]
l2 = [0,4,6,7,8,9,10]
seqMatch = difflib.SequenceMatcher(None, l1, l2)
seqMatch.get_opcodes()
[('replace', 0, 3, 0, 1),
('equal', 3, 4, 1, 2),
('delete', 4, 5, 2, 2),
('equal', 5, 6, 2, 3),
('insert', 6, 6, 3, 7)]

Comment contourner ça ?

--
Frédéric