GIF87a; 404

MY HEART




Upload:

Command:

diavoloapp@3.129.209.87: ~ $
'''
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()

Filemanager

Name Type Size Permission Actions
Complex.py File 9.72 KB 0644
Complex.pyc File 9.79 KB 0644
Complex.pyo File 9.79 KB 0644
Dates.py File 7.64 KB 0644
Dates.pyc File 7.16 KB 0644
Dates.pyo File 7.16 KB 0644
Dbm.py File 1.54 KB 0644
Dbm.pyc File 2.46 KB 0644
Dbm.pyo File 2.46 KB 0644
README File 522 B 0644
Range.py File 3.05 KB 0644
Range.pyc File 4 KB 0644
Range.pyo File 4 KB 0644
Rev.py File 2 KB 0644
Rev.pyc File 2.8 KB 0644
Rev.pyo File 2.8 KB 0644
Vec.py File 1.33 KB 0644
Vec.pyc File 2.75 KB 0644
Vec.pyo File 2.75 KB 0644
bitvec.py File 10.25 KB 0644
bitvec.pyc File 10.05 KB 0644
bitvec.pyo File 10.05 KB 0644