Académique Documents
Professionnel Documents
Culture Documents
Quelles sont les listes construites par chacune des expressions suivantes ?
1 [ car if car in ’ aeiouy ’ else ’_ ’ for car in ’ Abricot ’]
2 [( i , j ) for i in [1 , 4 , 8] for j in [3 , 2 , 6]]
3 [i + j for i in range (10) for j in [1 , 2 , 4] if i < j ]
4 [( i , j ) for i in range (0 , 4) for j in range (i , i +4) if ( i + j ) % 2 == 0]
Pour chaque question, il vous est possible d’utiliser les fonctions qui sont l’objet des questions
précédentes, même si vous n’avez pas répondu à ces questions.
1. Définir la fonction begaie(lis) qui, étant donné une liste lis, retourne la liste obtenue en
bégayant lis, c’est à dire la liste dans laquelle chacun des éléments de lis est répété deux fois.
>>> begaie ([])
[]
>>> begaie ([ ’a ’ , ’a ’ , ’b ’ , ’c ’ ])
[ ’a ’ , ’a ’ , ’a ’ , ’a ’ , ’b ’ , ’b ’ , ’c ’ , ’c ’]
Page 2 sur 4
Algorithmique et Programmation 1
CC Final – 6/01/2022
2. Définir la fonction debegaie(lis) qui, étant donné une liste lis, retourne la liste obtenue
en débégayant lis, c’est à dire la liste qui ne contient qu’une seule copie de chaque éléments
identiques consécutifs.
>>> debegaie ([])
[]
>>> debegaie ([ ’a ’ , ’a ’ , ’b ’ , ’c ’ , ’c ’ , ’c ’ , ’d ’ ])
[ ’a ’ , ’b ’ , ’c ’ , ’d ’]
3. Définir la fonction prem_nb_occ(lis) qui, étant donné une liste lis non vide, retourne le
couple (elem, nb_occ), où elem est le premier élément de la liste et nb_occ est le nombre de
fois que cet élément apparaît au début de la liste.
>>> prem_nb_occ ([ ’a ’ , ’b ’ , ’a ’ ])
( ’a ’ , 1)
>>> prem_nb_occ ([ ’b ’ , ’b ’ , ’b ’ , ’a ’ , ’c ’ , ’b ’ ])
( ’b ’ , 3)
>>> prem_nb_occ ([ ’d ’ , ’d ’ , ’d ’ , ’d ’ ])
( ’d ’ , 4)
4. Définir la fonction compacte(lis) qui, étant donné une liste lis, retourne une liste qui contient
des couples (elem, nb_occ) pour chaque valeurs identiques consécutives de lis.
>>> compacte ([ ’b ’ , ’b ’ , ’b ’ , ’a ’ , ’c ’ , ’b ’ ])
[( ’b ’ , 3) , ( ’a ’ , 1) , ( ’c ’ , 1) , ( ’b ’ , 1)]
>>> compacte ([ ’a ’ , ’b ’ , ’a ’ ])
[( ’a ’ , 1) , ( ’b ’ , 1) , ( ’a ’ , 1)]
>>> compacte ([ ’d ’ , ’d ’ , ’d ’ , ’d ’ ])
[( ’d ’ , 4)]
>>> compacte ([])
[]
5. Définir la fonction decompacte(lis) qui, étant donné une liste de couples telle que construite
avec la fonction compacte, retourne la liste décompactée, c’est à dire la liste où chaque couple
(elem, nb_occ) est remplacé par une sous-suite de nb occurrences de elem.
>>> decompacte ([( ’b ’ , 3) , ( ’a ’ , 1) , ( ’c ’ , 1) , ( ’b ’ , 1)])
[ ’b ’ , ’b ’ , ’b ’ , ’a ’ , ’c ’ , ’b ’]
>>> decompacte ([( ’a ’ , 1) , ( ’b ’ , 1) , ( ’a ’ , 1)])
[ ’a ’ , ’b ’ , ’a ’]
>>> decompacte ([( ’d ’ , 4)])
[ ’d ’ , ’d ’ , ’d ’ , ’d ’]
>>> decompacte ([])
[]
Page 3 sur 4