helloworld
helloworld

Reputation: 409

Printing element in array python problems

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.

Upvotes: 0

Views: 56

Answers (2)

krock
krock

Reputation: 29619

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

Upvotes: 0

Alex Taylor
Alex Taylor

Reputation: 8813

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))

Upvotes: 2

Related Questions