[NEWBIE] Priority Queue in Python

Fredrik Lundh fredrik at effbot.org
Sat Feb 3 21:35:01 CET 2001


David Boeren wrote:
> Also, one specific question.  Maybe it's because I don't know the
> idioms yet, but I keep wanting to have access to a loop counter
> variable in my for loops.  For example:
>
> for i in list:
>     print i, "is the", list.index(i), "element"

Ouch.

> The index() call takes too long, I wish there was like a hidden
> variable so I could say it like this.  Is there?
>
> for i in list:
>     print i, "is the", __loopindex__, "element"
>
> Or is there just a better way to do this that I don't know?

There's is an index counter deep inside Python, but you
cannot access it from the "outside" [1].  But there are
more efficient ways to do what you want:

    for i in range(len(list)):
        item = list[i]
        print item, "is the", i, "element"

or

    i = 0
    for item in list:
        print item, "is the", i, "element"
        i += 1

Cheers /F

1) the counter is passed to the list's __getitem__ method.
you can wrap the list in an adapter object whose __getitem__
method returns both the element and the index as a tuple
(but don't do that if you care about performance).





More information about the Python-list mailing list