2017-07-04 10 views
1

反復された値のリストを作成するのに助けが必要です。この例では、xの範囲ですべての奇数を取得したいと考えています。そして、そこからリストを作る:Pythonの反復オブジェクトからリストを返す

def x_list(x): 
    for i in range(x): 
     if x%2==0: 
      return i 

リターンが最初のオブジェクトを繰り返し処理した後に機能を停止しているので、私は残りの値を取得し、それからリストを作成することができませんよ。 "返品"の代わりに何を使用すべきかアドバイスできますか? ありがとうございます。

答えて

0

関数の先頭にリストとしてretを定義し、ループ内に入力します。

ループが終了したら、それを返します。あなたはyield代わりreturnのを使用している場合

def x_list(x): 
    ret = [] 
    for i in range(x): 
     if i%2==0: 
      ret.append(i) 
    return ret 
+0

私の最初のコードを編集してくれてありがとう、それは私の最初の投稿であり、私はまだ正しいフォーマットを考え出しています。 – gidHxly

+0

問題ありません.. '{}'で囲まれたボタンがあり、このボタンを押すとコードエリアが生成されます –

+0

このスタイルのアキュムレータよりもジェネレータ関数が好ましいです。 – hop

1

、あなたは全体の範囲を反復処理することができるはずです。この例では、偶数を印刷します。

def x_list(x): 
    for i in range(x): 
     if i%2==1: 
      yield i 

for n in x_list(10): 
    print(n) 

私はまた、そうでなければ、すべての数だけではなく奇妙なものを得るでしょう、あなたがif i%2==1:ないif x%2==0:をしたいと仮定します。

ホップの提案をもとに、あなたもこれを行うことができます:rangeで3番目のパラメータは、ステップサイズ範囲で

+1

stepパラメータとともに 'range()'を使うより良い方法を示すべきです。 – hop

0

にある

evens = range(0, 10, 2) 

for n in evens: 
    print(n) 

は、あなたが足踏みを指定することができます。

したがって、すべてを行う必要がある:

def oddlist(x): 
    return list(range(1, x, 2)) 

あなたが実際にリストを必要としない、とだけ反復可能で行います場合は、リストの生成を省略することができます:

def oddlist(x): 
    return range(1, x, 2) 
関連する問題