range et xrange pour les nombres à 13 chiffres en Python?
range()
et xrange()
de travail pour les 10 chiffres-chiffres. Mais que diriez-13-chiffres-les chiffres? Je n'ai rien trouvé dans le forum.
source d'informationauteur kame
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce. Même sémantique que la gamme:
Une autre solution serait d'utiliser
itertools.islice
comme suggéré dansxrange
's la documentationPas de problèmes avec la création de la gamme, aussi longtemps que vous ne voulez pas 10**13 éléments, par exemple,
donne
si vous avez besoin d'énumérer entier essayez d'utiliser itertools:
il ne faut pas allouer de la mémoire pour une liste de
1000000000000
élémentsJe ne pense pas que cela va fonctionner. Des fonctions comme
len
attendent le résultat de l'ajustement dans un 4 octets entier, en raison de restrictions en la disponible de mise en œuvre.En Python 3.0:
On dirait qu'il travaille, mais...
Voir ici pour une question connexe.
Sur 64 bits Python:
Je ne voudrais pas utiliser
range()
pour un numéro de 13 chiffres. Ma pauvre machine ne serait pas en mesure de tenir la liste.plage(x) renvoie une liste.Python listes cant contiennent que de nombreux éléments. Vous devez utiliser xrange() pour itérer à travers ces chiffres si vous avez besoin de faire des milliers de milliards de cycles.?
range() et xrange() fonctionne assez récentes versions de Python; cependant, dans de 2,5 ou moins, vous aurez besoin de travailler autour de l'int en long de conversion.
Cette solution n'est pas complète (il ne gère pas les négatifs), mais il devrait vous aller.
La différence entre() et xrange() est que le premier renvoie à l'ensemble de la liste, tandis que la seconde renvoie à un générateur qui génère chaque numéro que c'est nécessaire. Le second doit travailler pour n'importe quel nombre, peu importe comment grand.
En Python 3.0, xrange() a disparu et la plage() se comporte comme xrange() auparavant.
Pour la solution de ce problème, vous n'avez pas besoin de ces numéros longs, parce que vous avez besoin seulement de facteurs premiers, vous pouvez utiliser la racine carrée: