Partition de tableau
Écrire une fonction partition
qui prend en paramètres un entier pivot
et une liste d’entiers tableau
et qui renvoie un tuple composé de trois listes :
- la première liste contient les indices, dans l'ordre croissant, des valeurs de
tableau
strictement inférieures àpivot
; - la deuxième liste contient les indices, dans l'ordre croissant, des valeurs de
tableau
égales àpivot
; - la troisième liste contient les indices, dans l'ordre croissant, des valeurs de
tableau
strictement supérieures àpivot
.
Exemples
>>> partition(3, [1, 3, 4, 2, 4, 6, 3, 0])
([0, 3, 7], [1, 6], [2, 4, 5])
>>> partition(3, [1, 4, 2, 4, 6, 0])
([0, 2, 5], [], [1, 3, 4])
>>>partition(3, [1, 1, 1, 1])
([0, 1, 2, 3], [], [])
>>> partition(3, [])
([], [], [])
def partition(pivot, tableau):bksl-nl ...bksl-nlbksl-nlbksl-nlbksl-nlbksl-nl# Testsbksl-nlassert partition(3, [1, 3, 4, 2, 4, 6, 3, 0]) == ([0, 3, 7], [1, 6], [2, 4, 5])bksl-nlassert partition(3, [1, 4, 2, 4, 6, 0]) == ([0, 2, 5], [], [1, 3, 4])bksl-nlassert partition(3, [1, 1, 1, 1]) == ([0, 1, 2, 3], [], [])bksl-nlassert partition(3, []) == ([], [], [])bksl-nlbksl-nldef partition(pivot, tableau):bksl-nl indicespy-undinferieur = []bksl-nl indicespy-undegal = []bksl-nl indicespy-undsuperieur = []bksl-nl for i in range(len(tableau)):bksl-nl if tableau[i] < pivot:bksl-nl indicespy-undinferieur.append(i)bksl-nl elif tableau[i] > pivot:bksl-nl indicespy-undsuperieur.append(i)bksl-nl else:bksl-nl indicespy-undegal.append(i)bksl-nl return (indicespy-undinferieur, indicespy-undegal, indicespy-undsuperieur)bksl-nlbksl-nl
A
Z