Problem with a for loop and a list

Discussion in 'Python' started by Alexnb, Jul 2, 2008.

  1. Alexnb

    Alexnb Guest

    I am not sure what is going on here. Here is the code that is being run:

    def getWords(self):
    self.n=0
    for entry in self.listBuffer:
    self.wordList[self.n] = entry.get()
    self.n=self.n+1

    print self.wordList

    This is the "listBuffer" that you see:

    self.listBuffer=[self.e1, self.e2, self.e3, self.e4,
    self.e5, self.e6, self.e7, self.e8,
    self.e9, self.e10, self.e11,
    self.e12, self.e13, self.e14]

    (side note, those are all tkinter entry widgets, and the get() function gets
    the text)

    this is the error the interpreter is giving me when I run it:

    self.getWords()
    File "C:/Documents and Settings/Alex/My Documents/PYTHON/DictionaryApp/The
    GUI.py", line 153, in getWords
    self.wordList[self.n] = entry.get()
    IndexError: list assignment index out of range

    I have no idea what "list assignment index out of range means?!?!



    --
    View this message in context: http://www.nabble.com/Problem-with-a-for-loop-and-a-list-tp18232298p18232298.html
    Sent from the Python - python-list mailing list archive at Nabble.com.
    Alexnb, Jul 2, 2008
    #1
    1. Advertising

  2. Alexnb

    Peter Otten Guest

    Alexnb wrote:

    >
    > I am not sure what is going on here. Here is the code that is being run:
    >
    > def getWords(self):
    > self.n=0


    The value of self.n only makes sense within the method, so you better use
    the local variable n instead of the instance attribute self.n

    > for entry in self.listBuffer:
    > self.wordList[self.n] = entry.get()
    > self.n=self.n+1
    >
    > print self.wordList
    >
    > This is the "listBuffer" that you see:
    >
    > self.listBuffer=[self.e1, self.e2, self.e3, self.e4,
    > self.e5, self.e6, self.e7, self.e8,
    > self.e9, self.e10, self.e11,
    > self.e12, self.e13, self.e14]
    >
    > (side note, those are all tkinter entry widgets, and the get() function
    > gets the text)
    >
    > this is the error the interpreter is giving me when I run it:
    >
    > self.getWords()
    > File "C:/Documents and Settings/Alex/My
    > Documents/PYTHON/DictionaryApp/The
    > GUI.py", line 153, in getWords
    > self.wordList[self.n] = entry.get()
    > IndexError: list assignment index out of range
    >
    > I have no idea what "list assignment index out of range means?!?!


    As Albert explained this means that wordList is shorter than listBuffer. The
    most flexible remedy is to have wordList grow dynamically:

    def getWords(self):
    wordList = []
    for entry in self.listBuffer:
    wordList.append(entry.get())
    print wordList

    If for some reason you want to remember the values in wordList add

    self.wordList = wordList

    to the method (this is the same consideration as for self.n versus n).

    Peter
    Peter Otten, Jul 2, 2008
    #2
    1. Advertising

  3. Alexnb a écrit :
    > I am not sure what is going on here. Here is the code that is being run:
    >
    > def getWords(self):
    > self.n=0
    > for entry in self.listBuffer:
    > self.wordList[self.n] = entry.get()
    > self.n=self.n+1


    > print self.wordList



    def get_words(self):
    self.word_list = [e.get() for e in self.list_buffer]


    > This is the "listBuffer" that you see:
    >
    > self.listBuffer=[self.e1, self.e2, self.e3, self.e4,
    > self.e5, self.e6, self.e7, self.e8,
    > self.e9, self.e10, self.e11,
    > self.e12, self.e13, self.e14]


    What a fantastic naming scheme. So easy to read, understand and
    maintain. Congratulation, you just won the right to read "How to write
    unmaintainable code":

    http://mindprod.com/jgloss/unmain.html
    Bruno Desthuilliers, Jul 2, 2008
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. author
    Replies:
    5
    Views:
    610
    author
    Jul 28, 2004
  2. Replies:
    5
    Views:
    589
    benben
    Jan 31, 2006
  3. Uday Bidkar
    Replies:
    4
    Views:
    474
    =?ISO-8859-15?Q?Juli=E1n?= Albo
    Dec 12, 2006
  4. Roedy Green
    Replies:
    3
    Views:
    415
    Mike Schilling
    Sep 13, 2008
  5. Isaac Won
    Replies:
    9
    Views:
    352
    Ulrich Eckhardt
    Mar 4, 2013
Loading...

Share This Page