Bonjour cher forum,

je débute en python, et pour m'entrainer, je fais les exercices proposés par checkio.

voici ce que la définition doit faire (regrouper en sous-liste les éléments égaux consécutifs):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
group_equal([1, 1, 4, 4, 4, "hello", "hello", 4]) == [[1,1],[4,4,4],["hello","hello"],[4]]
 
group_equal([1, 2, 3, 4]) == [[1], [2], [3], [4]]
 
group_equal([1]) == [[1]]
 
group_equal([]) == []
Mon code:

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
def group_equal(els):
 
    tab = []
    tab_final = []
    a = els[0]
 
    for i in els:
        if i == a:
            tab.append(i)
 
        else:
            tab_final.append(tab)
            tab.clear()
            tab.append(i)
            a = i
 
    return tab_final
 
 
if __name__ == '__main__':
    print("Example:")
    print(group_equal([1, 1, 4, 4, 4, "hello", "hello", 4]))
C'est sans doute pas le meilleur loin de là, j'en suis bien conscient

Je ne comprends pas le résultat que j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Example:
[[4], [4], [4]]
Pourquoi ma méthode .append n'ajoute pas correctement la liste tab à tab_final... Je cherche depuis des heures et ne trouve pas...
Je sais par ailleur qu'il me manque la dernière boucle, mais ca je pense pouvoir me débrouiller pour trouver une solution.

Une ame charitable pour m'éclaircir?
Merci beaucoup