Partage d'un tableau⚓︎
On donne une liste Python valeurs
et un entier n
.
On garantit que n
est un entier compris entre 0 et la longueur de valeurs
(inclus l'un et l'autre).
Compléter le code de la fonction partage
qui :
- prend
valeurs
etn
en arguments, - renvoie le couple formé :
- de la liste comprenant les
n
premiers éléments devaleurs
(situés à gauche), - de la liste comprenant les éléments restants (situés à droite).
- de la liste comprenant les
Exemples
>>> partage(['pim', 'pam', 'poum'], 2)
(['pim', 'pam'], ['poum'])
>>> partage([7, 12, 5, 6, 8], 0)
([], [7, 12, 5, 6, 8])
>>> partage([7, 12, 5, 6, 8], 5)
([7, 12, 5, 6, 8], [])
def partage(valeurs, n):bksl-nl taille = len(valeurs)bksl-nlbksl-nl partiepy-undgauche = []bksl-nl for i in range(...):bksl-nl partiepy-undgauche...bksl-nlbksl-nl partiepy-unddroite = ...bksl-nl for i in range(..., ...):bksl-nl ...bksl-nlbksl-nl return (..., ...)bksl-nlbksl-nlbksl-nl# Testsbksl-nlassert partage(["pim", "pam", "poum"], 2) == (["pim", "pam"], ["poum"])bksl-nlassert partage([7, 12, 5, 6, 8], 0) == ([], [7, 12, 5, 6, 8])bksl-nlassert partage([7, 12, 5, 6, 8], 5) == ([7, 12, 5, 6, 8], [])bksl-nlbksl-nldef partage(valeurs, n):bksl-nl taille = len(valeurs)bksl-nlbksl-nl partiepy-undgauche = []bksl-nl for i in range(n):bksl-nl partiepy-undgauche.append(valeurs[i])bksl-nlbksl-nl partiepy-unddroite = []bksl-nl for i in range(n, taille):bksl-nl partiepy-unddroite.append(valeurs[i])bksl-nlbksl-nl return (partiepy-undgauche, partiepy-unddroite)bksl-nlbksl-nlbksl-nl# Testsbksl-nlassert partage(["pim", "pam", "poum"], 2) == (["pim", "pam"], ["poum"])bksl-nlassert partage([7, 12, 5, 6, 8], 0) == ([], [7, 12, 5, 6, 8])bksl-nlassert partage([7, 12, 5, 6, 8], 5) == ([7, 12, 5, 6, 8], [])bksl-nlbksl-nl
A
Solution alternative⚓︎
On pourrait aussi utiliser les listes en compréhension :
def partage(valeurs, n):
taille = len(valeurs)
return (
[valeurs[i] for i in range(n)],
[valeurs[i] for i in range(n, taille)],
)
Utilisation des tranches⚓︎
On ne recommande pas les tranches en NSI, mais on peut obtenir une solution simple avec :
def partage(valeurs, n):
return valeurs[:n], valeurs[n:]
En effet :
valeurs[a:b]
renvoie une copie devaleurs
de l'indicea
inclus jusqu'à l'indiceb
exclu ;- omettre
a
signifie partir du début ; - omettre
b
signifie aller jusqu'à la fin.
On peut aussi utiliser des indices négatifs, par exemple :
valeurs[-5:]
renvoie les 5 derniers éléments ;valeurs[:-5]
renvoie tout sauf les 5 derniers éléments.
Z