Aller au contenu

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 et n en arguments,
  • renvoie le couple formé :
    • de la liste comprenant les n premiers éléments de valeurs (situés à gauche),
    • de la liste comprenant les éléments restants (situés à droite).

Exemples

🐍 Console Python
>>> 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], [])
###
# 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# Tests supplémentairesbksl-nlassert partage(list(range(-10, 10)), 0) == ([], list(range(-10, 10)))bksl-nlassert partage(list(range(-10, 10)), 3) == (list(range(-10, -7)), list(range(-7, 10)))bksl-nlassert partage(list(range(-10, 10)), 5) == (list(range(-10, -5)), list(range(-5, 10)))bksl-nlassert partage(list(range(-10, 10)), 20) == (list(range(-10, 10)), [])bksl-nlbksl-nl 5/5

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 :

🐍 Script Python
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 :

🐍 Script Python
def partage(valeurs, n):
    return valeurs[:n], valeurs[n:]

En effet :

  • valeurs[a:b] renvoie une copie de valeurs de l'indice a inclus jusqu'à l'indice b 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