srange

Sage

Python dispose des séquences aux valeurs régulières avec range. Mais, les valeurs sont entières. range (5, 10, 2) ==> [5, 7, 9]

Le module numpy fournit le constructeur arange.

Sage introduit srange (documentation sur srange):

srange (start, end=None, step=1, universe=None, check=True, include_endpoint=False, endpoint_tolerance=1e-05)

  • universe - Parent or type where all the elements should live (default: deduce from inputs)
  • check - make sure a, b, and step all lie in the same universe
  • include_endpoint - whether or not to include the endpoint (default: False)
  • endpoint_tolerance - used to determine whether or not the endpoint is hit for inexact rings (default 1e-5)

Comme range

sage: srange(5);

[0, 1, 2, 3, 4] # n'inclut pas 5

sage: srange(1, 10)

[1, 2, 3, 4, 5, 6, 7, 8, 9] # n'inclut pas 10

sage: srange(10, 1, -1)

[10, 9, 8, 7, 6, 5, 4, 3, 2] # n'inclut pas 1

Inclure la borne de fin

sage: srange(10,1,-1, include_endpoint=True)

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Passer aux réels - Préciser l'univers

sage: srange(1, 10, universe=RDF) [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]

Des pas fractionnaires ou avec des décimales après le .

sage: srange(1, 10, 1/2)

[1, 3/2, 2, 5/2, 3, 7/2, 4, 9/2, 5, 11/2, 6, 13/2, 7, 15/2, 8, 17/2, 9, 19/2]

sage: srange(0, 1, 0.4)

[0.000000000000000, 0.400000000000000, 0.800000000000000]

Utilisez plutôt xsrange quand la cardinalité de la séquence est très importante quand vous l'utilisez dans une boucle for

srange construit la séquence avant d'exécuter la boucle(d'où occupation mémoire moindre) alors que xsrange calcule et fournit l'élément suivant à chaque itération de la boucle. Cette technique est issue des itérateurs/générateurs de Python.

A

for i in srange(100000000) :

préférez

for i in xsrange(100000000) :


» Glossaire de Sage