On Apr 18, 2004, at 10:21 PM, Christian Stork wrote: > On Sun, Apr 18, 2004 at 10:08:25PM -0400, Bob Ippolito wrote: >> >> On Apr 18, 2004, at 9:53 PM, Christian Stork wrote: >> >>> Hi, >>> >>> I wanted to do something like >>> >>> i = itertools.chain(list1, list2).index(elem) >>> >>> but that gave me >>> >>> ... >>> AttributeError: 'itertools.chain' object has no attribute 'index' >>> >>> If I use the operator module it works just fine. >>> >>> i = operator.indexOf(itertools.chain(list1, list2), elem) >>> >>> Why not add the index method to iterator objects? Of course, >>> internally >>> only next() is used by the default implementation. >> >> An iterator mutates each time you call its next(). Your call to >> indexOf does one of three things: exhaust some of your iterator and >> return a useless integer, > > Why useless? It returns the index. Why do I have to build a new > concatinated list (or my own special index function) in order to get > that information? It returns an index into some sequence that no longer exists. What good is that? >> exhaust all of your iterator and raise an exception, > > Yep, just as it would for lists. The difference is that the iterator's life is more or less over, there's probably nothing useful you can do with it, but a list is not changed by this operation. >> If you want an object that acts like a list, you should use a list. > > I don't see anything inherently "listy" about index(). It just counts > how many elements there are to reach elem. And obviously the > functionality is already there in the operator module. I'm just > proposing a little convenience. I think it's pretty rare that you would want to know this information at the cost of exhausting some/all of your iterator... and if that really is what you want, then you should just use operator.indexOf. There are MANY iterable types, it's not reasonable to change them all. -bob
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4