objectoriented -?- functional

Gerard Flanagan grflanagan at gmail.com
Wed Mar 18 11:29:48 EDT 2009


Walther Neuper wrote:
>  >>> def reverse_(list):
> ...     """list.reverse() returns None; reverse_ returns the reversed 
> list"""
> ...     list.reverse()
> ...     return list
> ...
>  >>> ll = [[11, 'a'], [33, 'b']]
>  >>> l = ll[:]  # make a copy !
>  >>> l = map(reverse_, l[:])  # make a copy ?
>  >>> ll.extend(l)
>  >>> print("ll=", ll)
> ('ll=', [['a', 11], ['b', 33], ['a', 11], ['b', 33]])
> 
> But I expected to get ...
> ('ll=', [[11, 22], [33, 44], [22, 11], [44, 33]])
> ... how would that elegantly be achieved with Python ?
> 

Your example isn't clear, but you may be better off using list 
comprehensions and the builtin 'reversed' function (though I don't know 
if it is available in 2.4).

Some code if it helps:

a = [1, 2, 3]
b = [a, a, a]
print [list(reversed(X)) for X in b]
[[3, 2, 1], [3, 2, 1], [3, 2, 1]]

grid = [
         [1, 2, 3],
         [6, 5, 4],
         [7, 8, 9],
         ]
print [list(reversed(X)) if i % 2 else X for i, X in enumerate(grid)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

def revers_(seq):
     seq = seq[:]
     seq.reverse()
     return seq

print a
[1, 2, 3]

print revers_(a)
[3, 2, 1]
print a
[1, 2, 3]


print b
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
print map(revers_, b)
[[3, 2, 1], [3, 2, 1], [3, 2, 1]]
print b
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]





More information about the Python-list mailing list