Raymond Hettinger wrote: > From: "Guido van Rossum" <[EMAIL PROTECTED]> >> But doesn't the very same argument also apply against islice(), which >> you just offered as an alternative? > > Not really. The use cases for islice() typically do not involve > repeated slices of an iterator unless it is slicing off the front > few elements on each pass. In contrast, getitem() is all about > grabbing something other than the frontmost element and seems > to be intended for repeated calls on the same iterator.
That wouldn't make sense as getitem() consumes the iterator! ;) But seriously: perhaps the name getitem() is misleading? What about item() or pickitem()? > And its > support for negative indices seems somewhat weird in the > context of general purpose iterators: getitem(genprimes(), -1). This does indeed make as much sense as sum(itertools.count()). > I'll study Walter's use case but my instincts say that adding > getitem() will do more harm than good. Here's the function in use (somewhat invisibly, as it's used by the walknode() method). This gets the oldest news from Python's homepage: >>> from ll.xist import parsers, xfind >>> from ll.xist.ns import html >>> e = parsers.parseURL("http://www.python.org", tidy=True) >>> print e.walknode(html.h2 & xfind.hasclass("news"))[-1] Google Adds Python Support to Google Calendar Developer's Guide Get the first comment line from a python file: >>> getitem((line for line in open("Lib/codecs.py") if line.startswith("#")), 0) '### Registry and builtin stateless codec functions\n' Create a new unused identifier: >>> def candidates(base): ... yield base ... for suffix in count(2): ... yield "%s%d" % (base, suffix) ... >>> usedids = set(("foo", "bar")) >>> getitem((i for i in candidates("foo") if i not in usedids), 0) 'foo2' Servus, Walter _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com