4 votes

Est-ce que Python internalise les éléments d'une liste ?

num = [1, 2, 3]

Pour autant que je sache, le num contient des références à la liste int objets. Puisque les valeurs sont comprises dans l'intervalle [-5, 256] je pense qu'ils devraient être mis en cache. Mon évaluation est-elle correcte ?

5voto

timgeb Points 5966
>>> lst = [1, 2, 3]
>>> 1 is lst[0]
True

Cela semble être le cas sur ma version (CPython 3.8).

Le mécanisme d'internat ne devrait pas se soucier des références (noms de variables, positions de listes, ...) qui pointent vers l'objet - elles sont de toute façon unidirectionnelles.

0voto

wjandrea Points 1176

Une liste ? Non. La plupart des objets ne peuvent pas être mis en cache.

Cette liste ? Oui, parce que ce sont des entiers dans l'intervalle [-5, 256] comme vous l'avez dit.

Gardez à l'esprit qu'il s'agit d'un détail d'implémentation de CPython.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X