Skip to article frontmatterSkip to article content

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

la liste

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]

attention

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]
Loading...

.append() et .pop()

L = []
for i in range(4):
    L.append(i)
L
[0, 1, 2, 3]
while L:
    print(L.pop())
3
2
1
0

ajouts et tris

retraits

digression: range()

for i in range(4):
    print(i, end=" ")
0 1 2 3 

les paramètres de range()

for i in range(1, 21, 5):
    print(i, end=" ")
1 6 11 16 
list(range(1, 21, 5))
[1, 6, 11, 16]

exemples de listes

# la fonction list() permet
# de convertir en liste
L = list(range(5))
L
[0, 1, 2, 3, 4]
# un par un
L.append(100)

# ou plusieurs à la fois
L.extend([10, 20])
L
[0, 1, 2, 3, 4, 100, 10, 20]
# très souvent utilisé
# rappel: optimisé pour ça
L.pop()
L
[0, 1, 2, 3, 4, 100, 10]
# pour trier c'est simple
# on va creuser ça tout de suite
L.sort()
L
[0, 1, 2, 3, 4, 10, 100]

tri sur les listes

L = [10, -5, 3, 100]

# tri en place: attention cela retourne None !
this_is_none = L.sort()
# par contre L est modifiée
L
[-5, 3, 10, 100]
L1 = [10, -5, 3, 100]

# crée une copie
L2 = sorted(L1)
# voyez
print(L1)
print(L2)
[10, -5, 3, 100]
[-5, 3, 10, 100]

tri et renversement de liste

pour conclure - temporairement - sur ce sujet:

avertissements à propos des listes

(1) les itérateurs sont plus forts

sujet avancé que l’on verra plus tard

(2) pas efficace pour calcul scientifique

le tuple

# syntaxe pour un tuple vide
T = ()
T
()
# syntaxe pour un singleton
T1 = (4,)

# ou encore
T2 = 4,
T1 == T2
True

basique

# syntaxe pour plusieurs éléments
T1 = (3, 5, 'alice', 10+1j)
# ou encore
T2 =  3, 5, 'alice', 10+1j
# ou encore
T3 =  3, 5, 'alice', 10+1j,
T1 == T2
True
T1 == T3
True

le tuple est non mutable

# Python n'est pas content
try: 
    T1[3] = 5      
except Exception as e:
    print("OOPS", e)
OOPS 'tuple' object does not support item assignment

pourquoi le tuple ?