[Tutor] changing list index start

Joel Goldstick joel.goldstick at gmail.com
Sat Sep 11 15:46:40 CEST 2010


On Sat, Sep 11, 2010 at 9:25 AM, Rance Hall <ranceh at gmail.com> wrote:

> On Fri, Sep 10, 2010 at 6:14 PM, Lie Ryan <lie.1296 at gmail.com> wrote:
> > On 09/11/10 07:36, Rance Hall wrote:
>
> <snip>
>
> > In most cases in Python, you would almost never need to reference the
> > list's index directly since python makes it easy to use iterators;
> > however in your particular case, which is a valid exception, enumerate()
> > takes an optional second argument `start` which defines the number that
> > enumerate start to count with, i.e. you can do:
> >
> > for i, option in enumerate(mainmenuoptions, 1):
> >    print('%s. %s' % (i, option))
> >
> >> php provided a way to change this, but I can find no documentation
> >> that says python can do this as well.
> >
>
>
> Thanks everyone for responding,  Because this menu structure is
> repeated many times in my code, the ideal solution would have been to
> "set index start = 1" in the beginning of the script.
>
> something like sysctl variables in Linux perhaps but in this case only
> valid for this program.
>
> Its clear from the responses that this solution is not available in
> python, I wish it were, it would make my life much easier for this
> project.
>
> I like the approach that Lie suggested, as it seems more "natural
> python" to me as opposed to a workaround.
>
> However this is also only half a solution since it applies to the
> printed menus only and not to the response afterward.
>

It might be more trouble than its worth, but you could use a dictionary:
Instead of this:
    mainmenuoptions = ['Clients','Jobs','Billing','Quotes','To Do
Items','Employee','Exit']

do this:
    mainmenuoptions = {'Clients': 1,'Jobs': 2,'Billing': 3,'Quotes': 4,'To
Do
Items': 5,'Employee': 6,'Exit': 7}

Use the phrases as key, and the value as your numeric index.  Or you could
reverse {1: 'Clients', ...

if that suites your already written code.

If you use this pattern in many places, could you not refactor so that you
call
the process with the menu data structures as parameters, and fix the code
in a single place?



>
> It seems that Luke is right looks like we have to do math with the indexes.
>
> Lie also referred to my particular case as a valid exception, are
> there enough other such valid exceptions that requesting a feature
> enhancement would gain some traction?
>
> If this is but one of a few special cases, I doubt it would be worth
> the time or trouble to formally make the request.
>
> Maybe I should ask if there is a better way to do what I want to do
> here. Is there?
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>



-- 
Joel Goldstick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100911/b95ad12b/attachment.html>


More information about the Tutor mailing list