diff options
Diffstat (limited to 'Demo/classes/Rev.py')
-rwxr-xr-x | Demo/classes/Rev.py | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/Demo/classes/Rev.py b/Demo/classes/Rev.py deleted file mode 100755 index 7fd78e0..0000000 --- a/Demo/classes/Rev.py +++ /dev/null @@ -1,95 +0,0 @@ -''' -A class which presents the reverse of a sequence without duplicating it. -From: "Steven D. Majewski" <sdm7g@elvis.med.virginia.edu> - -It works on mutable or inmutable sequences. - ->>> chars = list(Rev('Hello World!')) ->>> print ''.join(chars) -!dlroW olleH - -The .forw is so you can use anonymous sequences in __init__, and still -keep a reference the forward sequence. ) -If you give it a non-anonymous mutable sequence, the reverse sequence -will track the updated values. ( but not reassignment! - another -good reason to use anonymous values in creating the sequence to avoid -confusion. Maybe it should be change to copy input sequence to break -the connection completely ? ) - ->>> nnn = range(3) ->>> rnn = Rev(nnn) ->>> for n in rnn: print n -... -2 -1 -0 ->>> for n in range(4, 6): nnn.append(n) # update nnn -... ->>> for n in rnn: print n # prints reversed updated values -... -5 -4 -2 -1 -0 ->>> nnn = nnn[1:-1] ->>> nnn -[1, 2, 4] ->>> for n in rnn: print n # prints reversed values of old nnn -... -5 -4 -2 -1 -0 - -# ->>> WH = Rev('Hello World!') ->>> print WH.forw, WH.back -Hello World! !dlroW olleH ->>> nnn = Rev(range(1, 10)) ->>> print nnn.forw -[1, 2, 3, 4, 5, 6, 7, 8, 9] ->>> print nnn.back -[9, 8, 7, 6, 5, 4, 3, 2, 1] - ->>> rrr = Rev(nnn) ->>> rrr -<1, 2, 3, 4, 5, 6, 7, 8, 9> - -''' - -class Rev: - def __init__(self, seq): - self.forw = seq - self.back = self - - def __len__(self): - return len(self.forw) - - def __getitem__(self, j): - return self.forw[-(j + 1)] - - def __repr__(self): - seq = self.forw - if isinstance(seq, list): - wrap = '[]' - sep = ', ' - elif isinstance(seq, tuple): - wrap = '()' - sep = ', ' - elif isinstance(seq, str): - wrap = '' - sep = '' - else: - wrap = '<>' - sep = ', ' - outstrs = [str(item) for item in self.back] - return wrap[:1] + sep.join(outstrs) + wrap[-1:] - -def _test(): - import doctest, Rev - return doctest.testmod(Rev) - -if __name__ == "__main__": - _test() |