Ok!
Now, you wrote your expected results I understand better what you want to do...

Your solution seems fine except the "except IndexError:" part.
I would have wrote:

------------------------------------------
...
           except IndexError:
               if self.iters:
                   self.i=0
               else:
                   raise StopIteration
...
-------------------------------------------

- Use the operator "==" if you want to compare values
- if you want to test if a list is empty, test the list itself not the length
- Also, prefer to use "while 1:" in place of "while True:" it's more optimised since 1 is a constant and True is not a constant (but using True works fine too)

Anyway, if you are really a python beginner, I should say your program is very good.

Cyril


On 9/20/05, [EMAIL PROTECTED] < [EMAIL PROTECTED]> wrote:
>> Sorry, my description was not very good, I meant something behaving as:
>>
>> >>>example=Liter("abc","12345","XY")
>> >>>for x in example: print x,
>>
>> a 1 X b 2 Y c 3 4 5
>>
>> or for that append() method,
>>
>> >>>example=Liter("abc", "12345")
>> >>>for i in range(3): print example.next(),
>>
>> a 1 b
>>
>> >>>example.append ("XY")
>> >>>for x in example: print x,
>>
>> 2 c X 3 Y 4 5

>Check the module I posted on
>http://rafb.net/paste/results/CRT7bS68.html . append() makes things more
>complicated -- mainly because generators don't accept attributes, so it
>has to be wrapped in a class -- but the simple generator (without
>append) is more manageable

Thank you very much for your solution. Actually I needed that append()
method quite a lot, so maybe my solution (posted at the beginning of this
thread) was not that stupid :) (to inflate my ego a bit)

Anyway, this is roughly what I used it for; is it a sane use of iterators?

I was looking for the Holy Grail. I had an iterator 'quest' that produced
either junk that was to be thrown away, or the Holy Grail itself, or
another iterator of the same kind (that had to be searched for the Holy
Grail as well). The iterators were potentially infinite. The code was
rougly:

quest=Liter(quest)
for x in quest:
    if is_Holy_Grail(x):
        share_and_enjoy(x)
        break
    elif is_another_iterator(x):
        quest.append(x)


Best regards
P.

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

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

Reply via email to