2 votes

Comment puis-je définir une longueur (par exemple "short" ou "long") à une variable int ?

J'aimerais savoir s'il est possible de définir une longueur pour une variable en python comme en C : short , long etc.

3voto

Thomas Berlok Points 136

Je vous suggère de jeter un coup d'œil au dtype de Numpy, vous trouverez de la documentation à ce sujet. aquí .

Quelques exemples :

import numpy as np
a = np.dtype(np.int32)
a = np.dtype(np.int64)
a = np.dtype(np.float32)
a = np.dtype(np.float64)
a = np.dtype(np.float128)

0voto

Mark Beilfuss Points 582

Vous ne pouvez pas spécifier une précision directement. Lorsqu'un programme python int devient trop grand, il sera automatiquement converti en un long python. Vous pouvez initialiser un python long en ajoutant un 'l' ou un 'L'. Notez toutefois que cela n'est possible que dans python 2.

Par exemple :

long_int = 398593849843l

another = 13L

0voto

MSeifert Points 6307

Comme je l'ai déjà mentionné dans les commentaires, les entiers de Python sont de grands entiers. Ils peuvent contenir tous les nombres entiers que vous souhaitez :

>>> a = 1234567890 ** 100
... very long number ...

En Python, il est également rarement nécessaire d'utiliser des types plus courts car (au moins CPython) utilise un système de comptage de références et cela signifie que toutes les instances (et je veux dire todos ) ont un attribut refcount (64bit) et un pointeur vers la classe (un autre 64bit). Avec un overhead de 128 bits, il est rarement utile d'utiliser des entiers plus courts que 32 ou 64 bits.

Si vous voulez vraiment ces types C, vous pouvez utiliser NumPy, qui les intègre déjà :

>>> import numpy as np
>>> np.short(10)
10
>>> type(np.short(10))
numpy.int16

Mais la surcharge de mémoire pour les scalaires n'en vaut pas la peine, comme dit plus haut. Cependant, si vous avez des tableaux, cet argument ne tient plus :

>>> import sys
>>> sys.getsizeof(np.short(10))
26   # bytes

>>> arr = np.array([1,2,3,4,5,6,7,8,9,10], dtype=np.short)
>>> arr
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10], dtype=int16)
>>> sys.getsizeof(arr)
116  # bytes

C'est parce que NumPy enveloppe également les tableaux C et n'a l'overhead du nombre de références + l'overhead de la classe (+ l'overhead supplémentaire) (=96 octets) qu'une fois par tableau :

>>> sys.getsizeof(np.zeros(1000000, dtype=np.short))
2000096

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