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]]


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to