2

I have an object defined as follows:

class word(object): #object class

    def __init__(self, originalWord=None, azWord=None, wLength=None):
        self.originalWord = originalWord
        self.azWord = azWord
        self.wLength = wLength

I have a list called results[], where each index x in the list contains another list of words objects of length x. E.g. in results[3] there is a list of objects of length 3 and one of those objects may be (dog, gdo, 3). I have a value called maxL that represents the length of the list results[]. How do I access (and then print) the attributes I want by iterating through results[] and all of its lists?

This is what I have thus far but I know the syntax is wrong:

for x in range(0,maxL):
    for y in results[x]:
        print(results[x][y].azWord)

2 Answers 2

2

Why don't you just iterate the list like so:

for row in results:
    for item in row:
        print(item.azWord)

Because in your example results[x][y] would be incorrect. y is an object, not an int so you cannot use it to index from results. I would just use the above code to pull the objects themselves.

Or to use something closer to your original code

for x in range(0,maxL):
    for y in results[x]:
        print(y.azWord) # note y is the object itself, not an index
Sign up to request clarification or add additional context in comments.

1 Comment

That seems to work. And as a result I now know my algorithm is doing something funny... Thanks.
2

In the first loop:

for x in range(0,maxL):

you are looping through indices. In the second:

for y in results[x]:

you are looping through elements. In this case, through elements of a list. So you can access the attribute like:

print(y.azWord)
# ...

Note:

  • I would recommend you to follow Python naming conventions. Name your class as Word.

  • I would also recommend you to use more representative names, like:

    for i in range(0, maxL):
        for element in results[i]:
            print(element.azWord)
    
  • You can also loop through elements in the first loop. You should do this unless you want to modify the elements or you need to use indices:

    for words_list in results:
        for word in words_list:
            print(word.azWord)
    

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.