Licence CC BY-NC-ND, Thierry Parmentelat & Arnaud Legout

from IPython.display import HTML
HTML(filename="_static/style.html")

containers (1/2)#

plusieurs types pratiques et efficaces sont fournis de base, et notamment

  • liste et tuple: ce notebook

  • dictionnaire, ensemble: un peu plus tard

la liste#

  • permet de créer une liste de n’importe quels objets

  • les listes sont dynamiques, de taille variable

  • une liste peut être hétérogène (avoir des composants de types différents)

  • peuvent être imbriquées

    • comme une liste est un objet, on peut avoir une liste de listes

    • ou y mettre d’autres containers

  • bref, c’est super malléable et hyper pratique

    • toutefois, pas toujours hyper-efficace

basique#

L = []
L = [4, 'bob', 10 + 1j, True]
# on peut mélanger les types
L
[4, 'bob', (10+1j), True]
# les indices en python
# commencent à 0
L[2]
(10+1j)

modification par index#

# les indices commencent à 0
L
[4, 'bob', (10+1j), True]
# pour modifier un élément précis
L[2] = "BOOM"
# pas besoin de préserver les types
# ni rien de ce genre

L
[4, 'bob', 'BOOM', True]

modification par slice#

liste = [1, 2, 4, 8, 16, 32]
# le slicing est disponible
# sur les listes
liste[2:]
[4, 8, 16, 32]
# on peut aussi modifier
# toute une slice
liste[2:4] = [10, 20, 30]
liste
[1, 2, 10, 20, 30, 16, 32]
_images/writing-a-list-slice.png

attention#

  • L[i] = L2

    • remplace le i-ème élément de L par la liste L2

  • L[i:j] = L2

    • insère tous les éléments de la liste L2 à la position i

    • après avoir supprimé les éléments i jusqu’à j-1 dans L

modification sous pythontutor#

liste = [1, 2, 4, 8, 16, 32]
liste
[1, 2, 4, 8, 16, 32]
liste[2:4] = [10, 20, 30]
liste
[1, 2, 10, 20, 30, 16, 32]
liste[3] = [100, 200]
liste
[1, 2, 10, [100, 200], 30, 16, 32]
%load_ext ipythontutor
%%ipythontutor curInstr=1 width=1000
liste = [1, 2, 4, 8, 16, 32]
liste[2:4] = [10, 20, 30]
liste[3] = [100, 200]