La première chose à faire est de décider si la structure de données doit être mutable ou non. Comme il a été mentionné, les listes sont mutables, les tuples ne le sont pas. Cela signifie également que les tuples peuvent être utilisés comme clés de dictionnaire, alors que les listes ne le peuvent pas.
D'après mon expérience, les tuples sont généralement utilisés lorsque l'ordre et la position sont significatifs et cohérents. Par exemple, en créant une structure de données pour un jeu de type "choisissez votre propre aventure", j'ai choisi d'utiliser des tuples plutôt que des listes parce que la position dans le tuple était significative. Voici un exemple de cette structure de données :
pages = {'foyer': {'text' : "some text",
'choices' : [('open the door', 'rainbow'),
('go left into the kitchen', 'bottomless pit'),
('stay put','foyer2')]},}
La première position dans le tuple est le choix affiché à l'utilisateur lorsqu'il joue le jeu et la deuxième position est la clé de la page à laquelle ce choix mène et ceci est cohérent pour toutes les pages.
Les tuples sont également plus efficaces en termes de mémoire que les listes, bien que je ne sache pas exactement quand cet avantage devient apparent.
Consultez également les chapitres consacrés aux listes et aux tuples dans le document Pensez Python .
30 votes
Malheureusement, cette question a été marquée à tort comme un doublon. L'une des principales raisons pour lesquelles vous verrez souvent des listes être utilisées au lieu de tuples dans des situations où il n'y a pas de raisons fortes pour l'une ou l'autre est la lisibilité. Les accolades sont utilisées pour de nombreuses choses en Python, mais les crochets ne sont utilisés que pour les choses liées aux listes. Par exemple, lorsqu'on passe une liste en argument, c'est tellement plus facile à repérer que lorsqu'on passe un tuple :
my_func([e1, e2])
vsmy_func((e1, e2))