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'appartenance

5.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 aussi

Utilité : 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])  # unpacking

5.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 = 4

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

🔗 ← Retour au cours · ← précédent · Suivant →