2016-06-13 5 views
-4

私はPythonでリストを把握しようとしていますが、これらの2つの関数。リスト内のアイテムと、範囲内のi(0、len(x))の違いは

def print_list(x): 
    for j in range (0, len(x)): 
     print x[j] 

def print_list(x): 
    for item in list: 
     j = 0 
     print x[j] 
     j++ 

誰もが初心者に説明できますか?ありがとう!

+2

もう1つは有効なPython構文ではないようです。 'j ++'は 'j + = 1'でなければならず、' j = 0'は初期化がループの外側になければなりません。 – ZdaR

+3

また、2番目に 'list'変数がないので、' for'ループはクラッシュします(変数 'list'が別の場所で作成されていない限り)。ここで質問をする前に少なくとも**実行**のコードを確認する必要があります。 –

答えて

3

私は

def print_list(x): 
    for j in range (0, len(x)): 
     print x[j] 

は、ループはC++で実行する方法であると仮定します。あなたはそれを直感的に理解します。ここでは、range0からlen(x)の値を生成し(generatorsを参照)、forステートメントを繰り返し実行します。

コメントに指摘されているとおり、2番目の構文が間違っています。私は、リスト内のすべてのxitemを通じて

def print_list(x): 
    for item in x: 
     print(item) 

for文繰り返し処理を意味想定しています。
リストが[1,3,5,7,9]の場合、第1ループでitemの値は1になります。 2番目のループでは、itemの値は3になります。 3番目のループでitemの値は5になります。等々。

すべての値が繰り返されると、forループが終了します。

+0

ありがとうございました。あなたの答えを正しいものとしてマークしてください。知識の不足の謝罪私はちょうどpython(正確な笑になる3日)から始めています – R700

+0

初心者には何も問題はありません。誰もがどこかに出発しなければならない。最初にドキュメントを読んで、何が間違っているのかを理解し、強い疑問を提示しようとするならば、それを感謝します。乾杯と最高のすべて。 – SvbZ3r0

0

最初の例は正しいですし、それは十分にpythonicでなければなりません。 2番目は間違っています。

def print_list(x): 
    for item in list: #where is the iterable oject called list? This shuold be x 
     j = 0 # if you use a counter like j you shuold be defining before the loop otherwise you keep resetting it to 0. 
     print x[j] 
     j++ 

リスト内のすべてのelemetsを印刷する場合は、もっとpythonicで、より良い方法です。あなただけの範囲にrecuringことなく、上記の例のように行うことができますので、あなたは範囲を使用し、最初の例のようにlenをする必要はありません

def print_list(list_item): 
    for element in list_item: 
     print(element) 

は、リストが反復可能オブジェクトです()。

+2

もう1つは第2の問題です: 'j ++'は無効な構文です。それは 'j + = 1'でなければなりません。 – zondo

関連する問題