Chris Rebert wrote:
On Wed, Feb 25, 2009 at 1:16 AM, Helmut Jarausch
<jarau...@igpm.rwth-aachen.de> wrote:
Sorry if this is too simple but I couldn't find.

I vaguely remember there is a means to assign a variable length tuple
and catch the 'rest'  like

S="a,b,c,d"

(A,B,<list of remaining items>) = S.split(',')

In Python 3.0 (IIRC):

A, B, *rest = S.split(',')

As an aside, as of the last time I read the PEP[1] on this, I believe it exhausts (or attempts to exhaust) any iterator. IMHO, I think this exhausting is a bad idea because it prevents things like

  def numbers(start=0):
    i = start
    while True:
      yield i
      i += 1

  CONST_A, CONST_B, CONST_C, *rest = numbers()

which will hang in current Py3.0 until you blow a stack or overrun your heap somewhere because it will try to exhaust the infinite loop. It also changes the type from iter() to list() for the remaining content (not as grevious).


I agree that the "internal star" usage needs to exhaust the iterator:

  A, *rest, C, D = s.split(',')

but the terminal-star syntax should be a little more gracious with iterators.

Anyways, my $0.02 (minus taxes, money for multiple bailouts, and deflated by economic conditions -- so not worth much :).

-tkc

[1]
http://www.python.org/dev/peps/pep-3132/






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

Reply via email to