6.2. Méthodes utiles

Les collections sont accompagnées en Python de nombreuses méthodes très utiles dont nous allons explorer une partie. Pour rappel, les méthodes sont des fonctions appartenant à un objet et il faut donc les appeler à l’aide de la notation pointée de la manière suivante.

object.method()

Note

La liste des méthodes présentées ici n’est de loin pas exhaustive et ne représente pas tout ce que Python a à offrir. Pour en obtenir la liste complète, ou pour en savoir plus sur une méthode en particulier, n’oubliez pas l’existence de la fonction help() !

>>> help(str)  # toutes les méthodes des chaînes de caractères.
Help on class str in module builtins:
...
>>> help(str.find)  # les détails de la méthode `find()` de `str`
Help on method_descriptor:
...

6.2.1. Méthodes des chaînes de caractères

Les méthodes ci-dessous s’appliquent aux objets de type str (chaînes de caractères).

count()

La méthode count(substring) compte le nombre d’occurrences de substring dans la chaîne.

>>> seq = "ATTAGCATGCCGTATCGCA"
>>> seq.count('AT')
3

find()

La méthode find(substring) trouve l’indice de la première occurrence de substring dans la chaîne. Elle renvoie -1 si substring n’a pas été trouvée.

>>> #      0    5    10   15
>>> #      |    |    |    |
>>> seq = "ATTAGCATGCCGTATCGCA"
>>> seq.find("TCG")
14

isalpha(), isnumeric(), isupper(), islower()

Chacune des méthodes isalpha(), isnumeric(), isupper() et islower() renvoie un booléen en fonction du contenu de la chaîne, conformément au nom de chaque méthode.

def get_str_properties(s):
    return (f"La chaîne "{s}" est :\n"
            f"- alphabétique : {s.isalpha()}\n"
            f"- numérique    : {s.isnumeric()}\n"
            f"- majuscule    : {s.isupper()}\n"
            f"- minuscule    : {s.islower()}\n")


print(get_str_properties("huit"))
print(get_str_properties("8"))
print(get_str_properties("HUIT"))
La chaîne "huit" est :
- alphabétique : True
- numérique    : False
- majuscule    : False
- minuscule    : True

La chaîne "8" est :
- alphabétique : False
- numérique    : True
- majuscule    : False
- minuscule    : False

La chaîne "HUIT" est :
- alphabétique : True
- numérique    : False
- majuscule    : True
- minuscule    : False

capitalize(), upper(), lower()

Chacune des méthodes capitalize(), upper() et lower() renvoie une nouvelle chaîne obtenue à partir de la première. La méthode capitalize() modifie au besoin la chaîne de manière à ce que sa première lettre, et celle-ci uniquement, soit en majuscule. Les méthodes upper() et lower() font en sorte que toutes les lettres soient respectivement en majuscule et en minuscule.

>>> s = "AbCdF"
>>> s.capitalize()
'Abcdf'
>>> s.upper()
'ABCDF'
>>> s.lower()
'abcdf'

replace()

La méthode replace(old, new) renvoie une nouvelle chaîne dans laquelle toutes les occurrences de la sous-chaîne old dans la chaîne d’origine ont été remplacées par la chaîne new.

>>> s = "Hahahaha"
>>> s.replace('a', 'i')
'Hihihihi'

split()

La méthode split(substring=' ') renvoie une liste contenant la chaîne d’origine découpée selon le séparateur spécifié (l’espace par défaut).

>>> headers = "nom,prénom,age,e-mail"
>>> headers.split(',')
['nom', 'prénom', 'age', 'e-mail']

join()

La méthode join(iterable) renvoie une chaîne contenant la concaténation de tous les éléments de la collection donnée en utilisant la chaîne d’origine comme séparateur.

>>> " -> ".join([str(x * 12) for x in range(0, 13)])
'0 -> 12 -> 24 -> 36 -> 48 -> 60 -> 72 -> 84 -> 96 -> 108 -> 120 -> 132 -> 144'

6.2.2. Méthodes des listes

Les méthodes ci-dessous s’appliquent aux objets de type list (listes).

count(), index()

La méthode count(value) compte le nombre d’éléments de la liste dont la valeur est égale à value et renvoie ce nombre. Quant à elle, la méthode .index(value) renvoie l’index correspondant à la position du premier élément de la liste dont la valeur est égale à value.

>>> [1, 2, 3, 2, 4, 2].count(2)
3
>>> [1, 2, 3, 2, 4, 2].index(2)
1

reverse(), sort()

Les deux méthodes reverse() et sort() modifient la liste, respectivement en inversant son ordre et en la triant dans l’ordre croissant. Notez que c’est la liste d’origine qui est modifiée, et non pas une nouvelle liste qui est renvoyée. Ceci est dû à la nature mutable des listes, à l’inverse des chaînes de caractères qui sont immuables.

>>> l = list("Bonjour!")  # convertir une chaîne en liste sépare chaque caractère
>>> print(l)
['B', 'o', 'n', 'j', 'o', 'u', 'r', '!']
>>> l.reverse()
>>> print(l)
['!', 'r', 'u', 'o', 'j', 'n', 'o', 'B']
>>> l.sort()
>>> print(l)
['!', 'B', 'j', 'n', 'o', 'o', 'r', 'u']

Note

La méthode sort() compare entre eux les éléments de la liste à laquelle elle s’applique afin de la trier dans l’ordre. L’ordre de tri dépend donc du résultat de ces comparaisons, avec l’élément inférieur (ou égal) à tous les autres en tête et celui qui est supérieur (ou égal) à tous les autres en fin de liste. Les chaînes de caractères en Python sont comparées comme dans un dictionnaire, c’est-à-dire en comparant un à un les caractères de chaque chaîne dans l’ordre jusqu’à qu’il n’y ait pas égalité. Cependant, les caractères sont comparés selon leur valeur Unicode et non pas en suivant l’ordre alphabétique, ce qui peut avoir des effets inattendus. Ainsi, les mots commençant par des lettres majuscules seront classés avant ceux qui débutent par une minuscule, comme dans l’exemple ci-dessous. Notez par ailleurs que tous les éléments doivent être comparables deux à deux, sans quoi la méthode échoue et produit une erreur.

>>> l = ["DEF", "GHI", "abc", "ABC"]
>>> l.sort()
>>> print(l)
['ABC', 'DEF', 'GHI', 'abc']

remove(), extend(), insert()

Nous connaissons pop(index) qui supprime l’élément à la position index. La méthode remove(value) permet de supprimer le premier élément ayant comme valeur value trouvé dans la liste.

Pour ajouter des éléments à une liste, nous avons déjà vu append(value). La méthode extend(iterable) permet d’ajouter tous les éléments d’une collection à une liste.

Enfin, la méthode insert(index, value) permet d’insérer un élément value à la position index.