0

I want to go through each element of an array I've created. However, I'm doing some debugging and it's not. Here's what I have so far and what it's printing out.

    def prob_thirteen(self):
       #create array of numbers 2-30
       xcoords = [range(2,31)]
       ycoords = []

       for i in range(len(xcoords)):
           print 'i:', xcoords[i]

output:

    i: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]

Why does 'i' return my whole array and not just the first element: 2? I'm not sure why this is returning my whole array.

2 Answers 2

2
xcoords = [range(2,31)]

This line will create an array of length 1. The only element in that array is an array of the numbers 2 -> 30. Your loop is printing the elements of the outer array. Change that line to:

xcoords = range(2,31)

This answer is correct for Python 2 because the range function returns a list. Python 3 will return a range object (which can be iterated on producing the required values). The following line should work in Python 2 and 3:

xoords = list(range(2,31))
Sign up to request clarification or add additional context in comments.

Comments

0

First of all, change xcoords so that it isn't a list inside a list:

xcoords = range(2, 31)

We don't need to iterate over a list using an index into the list using len(xcoords). In python we can simply iterate over a list like this:

for coord in xcoords:
    print "i: ", coord

If we did need to keep track of the index we could use enumerate:

for i, coord in enumerate(xcoords):
    print str(i) + ":", coord

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.