On Fri, 14 Dec 2007 21:47:06 -0800, igor.tatarinov wrote: > Given a bunch of arrays, if I want to create tuples, there is > zip(arrays). What if I want to do the opposite: break a tuple up and > append the values to given arrays: > map(append, arrays, tupl) > except there is no unbound append() (List.append() does not exist, > right?).
Don't guess, test. >>> list.append # Does this exist? <method 'append' of 'list' objects> Apparently it does. Here's how *not* to use it to do what you want: >>> arrays = [[1, 2, 3, 4], [101, 102, 103, 104]] >>> tupl = tuple("ab") >>> map(lambda alist, x: alist.append(x), arrays, tupl) [None, None] >>> arrays [[1, 2, 3, 4, 'a'], [101, 102, 103, 104, 'b']] It works, but is confusing and hard to understand, and the lambda probably makes it slow. Don't do it that way. > Without append(), I am forced to write a (slow) explicit loop: > for (a, v) in zip(arrays, tupl): > a.append(v) Are you sure it's slow? Compared to what? For the record, here's the explicit loop: >>> arrays = [[1, 2, 3, 4], [101, 102, 103, 104]] >>> tupl = tuple("ab") >>> zip(arrays, tupl) [([1, 2, 3, 4], 'a'), ([101, 102, 103, 104], 'b')] >>> for (a, v) in zip(arrays, tupl): ... a.append(v) ... >>> arrays [[1, 2, 3, 4, 'a'], [101, 102, 103, 104, 'b']] I think you're making it too complicated. Why use zip()? >>> arrays = [[1, 2, 3, 4], [101, 102, 103, 104]] >>> tupl = tuple("ab") >>> for i, alist in enumerate(arrays): ... alist.append(tupl[i]) ... >>> arrays [[1, 2, 3, 4, 'a'], [101, 102, 103, 104, 'b']] -- Steven -- http://mail.python.org/mailman/listinfo/python-list