X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fsymbol_sequence.py;h=2a104aed958d877103e1962f1ad212e2ab07c981;hb=HEAD;hp=cd9e02dc675f0bea6f05d64ba277fab5aa1d8564;hpb=9a08c865c94e7efd3350e65ff73f67341c191be5;p=sage.d.git diff --git a/mjo/symbol_sequence.py b/mjo/symbol_sequence.py index cd9e02d..2a104ae 100644 --- a/mjo/symbol_sequence.py +++ b/mjo/symbol_sequence.py @@ -1,7 +1,7 @@ from sage.all import * class SymbolSequence: - """ + r""" An iterable object which acts like a sequence of symbolic expressions (variables). @@ -20,6 +20,10 @@ class SymbolSequence: An iterable object containing symbolic expressions. + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES: The simplest use case:: @@ -34,13 +38,13 @@ class SymbolSequence: degree:: sage: a = SymbolSequence('a') - sage: p = sum([ a[i]*x^i for i in range(0,5)]) + sage: p = sum( a[i]*x^i for i in range(5) ) sage: p a_4*x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0 Using a different latex name since 'lambda' is reserved:: - sage: l = SymbolSequence('l', '\lambda') + sage: l = SymbolSequence('l', r'\lambda') sage: l[0] l_0 sage: latex(l[0]) @@ -53,7 +57,7 @@ class SymbolSequence: a_0_1_2 sage: latex(a[0,1,2]) a_{0}_{1}_{2} - sage: [ a[i,j] for i in range(0,2) for j in range(0,2) ] + sage: [ a[i,j] for i in range(2) for j in range(2) ] [a_0_0, a_0_1, a_1_0, a_1_1] You can pass slices instead of integers to obtain a list of @@ -117,6 +121,10 @@ class SymbolSequence: appropriate name and latex_name before delegating to SR.symbol(). + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES:: sage: a = SymbolSequence('a', 'alpha', 'real') @@ -147,6 +155,10 @@ class SymbolSequence: more than can be said about some of the snappier solutions of lore. + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES:: sage: a = SymbolSequence('a') @@ -163,9 +175,10 @@ class SymbolSequence: result = [] for item in l: - if isinstance(item, list): + try: + item = iter(item) result += self._flatten_list_(item) - else: + except TypeError: result += [item] return result @@ -177,6 +190,10 @@ class SymbolSequence: tuples. It just hands off the real work to self._subscript_foo_(). + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES: An integer argument:: @@ -215,6 +232,10 @@ class SymbolSequence: The subscript is a single integer, or something that acts like one. + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES:: sage: a = SymbolSequence('a') @@ -239,6 +260,10 @@ class SymbolSequence: first. The start/step are default for lists. We make copies of these because they're read-only. + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES:: sage: a = SymbolSequence('a') @@ -268,6 +293,10 @@ class SymbolSequence: When we have more than one level of subscripts, we pick off the first one and generate the rest recursively. + SETUP:: + + sage: from mjo.symbol_sequence import SymbolSequence + EXAMPLES: A simple two-tuple:: @@ -300,11 +329,11 @@ class SymbolSequence: # corresponding to the second coordinate, with the first # coordinate(s) fixed. if isinstance(key, slice): - ss = [ SymbolSequence(w._repr_(), w._latex_(), self._domain) - for w in v ] + ss = ( SymbolSequence(w._repr_(), w._latex_(), self._domain) + for w in v ) # This might be nested... - maybe_nested_list = [ s._subscript_tuple_(args) for s in ss ] + maybe_nested_list = ( s._subscript_tuple_(args) for s in ss ) return self._flatten_list_(maybe_nested_list) else: