generator expression works in shell, NameError in script
Hello, I am trying to generate this list of tuples: [(0, ''), (1, 'Dr'), (2, 'Miss'), (3, 'Mr'), (4, 'Mrs'), (5, 'Ms')] My code works fine in the Python shell: >>> titles = ['Dr', 'Miss', 'Mr', 'Mrs', 'Ms',] >>> title_choices = [(0, '')] + list((titles.index(t)+1, t) for t in titles) >>> title_choices [(0, ''), (1, 'Dr'), (2, 'Miss'), (3, 'Mr'), (4, 'Mrs'), (5, 'Ms')] The same code run in a script fails with NameError: global name 'titles' is not defined Does anybody know why ? How can I fix the error ? Thank you very much :-) Steve -- http://mail.python.org/mailman/listinfo/python-list
Re: generator expression works in shell, NameError in script
Wow! Didn't expect that kind of instant support. Thank you very much, I'll give both zip and enumerate a try. The code I've shown is actually copied pretty straight from a Django form class, but I didn't want to mention that as not to dilute the conversation. Don't think it matters, anyway. This is the relevant excerpt: from django.forms import Form class SignupForm(Form): titles = ['Dr', 'Miss', 'Mr', 'Mrs', 'Ms',] title_choices = [(0, '')] + list((titles.index(t)+1, t) for t in titles) Now that I look at it again, it seems odd to me to not have the code e.g. in __init__(...), but just 'class-global'. Still, that does not seem a reason for titles not to be not defined, as I do define it just in the line above. Does the generator expression have its own little namespace or so ? -- http://mail.python.org/mailman/listinfo/python-list
Re: generator expression works in shell, NameError in script
On Jun 18, 10:49 am, Jon Clements wrote: > Why are you doing this? I'm assuming a code to title look up is > required (don't forget military, royal and honorable titles > etc... :) ) I'm in New Zealand. Hardly any need for military titles, rarely any for royal and damn sure none for honorable :-D (scnr) -- http://mail.python.org/mailman/listinfo/python-list
