2017-02-22 11 views
0

私が作成した配列の各要素を調べたいと思います。しかし、私はいくつかのデバッグをしていますが、そうではありません。ここに私がこれまでに持っていて、それが何を印刷しているのかがあります。配列のpythonの問題の印刷要素

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] 

出力:2:

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] 

なぜ「私は私の全体の配列だけでなく、最初の要素を返すのですか?なぜこれが私の配列全体を返すのか分かりません。

答えて

2
xcoords = [range(2,31)] 

この行は、その配列内の唯一の要素は、2つの数値の配列である長さ1の配列を作成します - > 30あなたのループが外側配列の要素を印刷しています。 range functionはリストを返すので、この答えはPythonの2のための正しい

xcoords = range(2,31) 

:にその行を変更します。 Python 3rangeオブジェクトを返します(これは必要な値を生成する際に反復することができます)。次の行は、Python 2と3で動作するはずです:すべての

xoords = list(range(2,31)) 
+0

不思議ああ、どうもありがとうございました! – helloworld

0

まず、それがリスト内のリストではありませんようにxcoordsを変更:

xcoords = range(2, 31) 

を私たちは反復する必要はありません。 len(xcoords)を使用してリストにインデックスを使用して我々はenumerateを使用することができ、インデックスを追跡する必要がなかった場合

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

:Pythonで、私たちは、単にこのようなリストを反復処理することができます

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