5. Listes et Tuples
list,tuple, slicing, list comprehensions,*unpacking, méthodes utiles.
5.1 Listes (list)
Séquences mutables et ordonnées.
fruits = ["pomme", "banane", "cerise"]
nombres = [1, 2, 3, 4, 5]
mixte = [1, "hello", 3.14, None]Méthodes principales
fruits.append("datte") # ajoute à la fin
fruits.insert(1, "abricot") # insère à l'index
fruits.extend(["figue", "raisin"]) # concatène une liste
fruits.remove("banane") # supprime la 1ère occurrence
fruits.pop() # retire et retourne le dernier
fruits.pop(0) # retire et retourne l'index 0
fruits.sort() # tri sur place
fruits.reverse() # inversion sur place
fruits.index("pomme") # index de la 1ère occurrence
fruits.count("pomme") # nombre d'occurrences
len(fruits) # taille
"pomme" in fruits # test d'appartenance5.2 Slicing [start:stop:step]
L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
L[2:5] # [2, 3, 4]
L[:4] # [0, 1, 2, 3]
L[4:] # [4, 5, 6, 7, 8, 9]
L[::2] # [0, 2, 4, 6, 8]
L[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
L[-3:] # [7, 8, 9] (3 derniers)
L[:-3] # [0, 1, 2, 3, 4, 5, 6]Copie superficielle : L[:] ou L.copy().
5.3 List comprehensions
carrés = [x**2 for x in range(10)] # [0, 1, 4, 9, ..., 81]
pairs = [x for x in range(20) if x % 2 == 0]
produits = [a * b for a in [1, 2, 3] for b in [10, 20]]Équivalent à :
carrés = []
for x in range(10):
carrés.append(x**2)Avec condition :
[x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]5.4 Tuples (tuple)
Séquences immuables. Syntaxe : parenthèses optionnelles.
point = (3, 4) # tuple
seul = (42,) # tuple à un élément (virgule obligatoire)
sans_par = 1, 2, 3 # tuple aussiUtilité : clés de dictionnaire, retour multiple de fonction, données non modifiables.
def min_max(L):
return min(L), max(L)
m, M = min_max([3, 1, 4, 1, 5]) # unpacking5.5 Unpacking
a, b, c = [1, 2, 3]
premier, *milieu, dernier = [1, 2, 3, 4, 5]
# premier = 1, milieu = [2, 3, 4], dernier = 5*rest, fin = range(5) # rest = [0, 1, 2, 3], fin = 45.6 map() et filter()
list(map(str.upper, ["a", "b", "c"])) # ["A", "B", "C"]
list(filter(lambda x: x > 0, [-1, 2, -3, 4])) # [2, 4]Préférer les comprehensions (plus lisibles) :
[x.upper() for x in ["a", "b", "c"]]
[x for x in [-1, 2, -3, 4] if x > 0]5.7 sorted() et reversed()
sorted([3, 1, 2]) # [1, 2, 3]
sorted([3, 1, 2], reverse=True) # [3, 2, 1]
sorted(["abc", "a", "ab"], key=len) # ["a", "ab", "abc"]
list(reversed([1, 2, 3])) # [3, 2, 1]