2017-07-04 83 views
1

我需要幫助創建一個迭代值列表。在這個例子中,我想獲得x範圍內的所有奇數。然後從它做一個清單:從Python中的迭代對象返回列表

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

由於返回通的第一個對象迭代後停止的功能,我無法獲得其餘值,並從它創建一個列表。 你能建議我應該用什麼來代替「返回」嗎? 謝謝。

回答

0

ret定義爲函數頂部的列表,將其填充到循環中。

循環結束後,返回它。

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

感謝編輯我的初始代碼,這是我的第一篇文章,我仍然在找出適當的格式。 – gidHxly

+0

沒問題..你有一個帶括號的按鈕'{}',按下這個按鈕,它會爲你生成一個代碼區域 –

+0

發電機功能比這種蓄電池風格更可取,因爲op已經/幾乎已經存在。 – hop

1

如果您使用的yield代替return,那麼你應該能夠在整個範圍內進行迭代。這個例子會打印出偶數。

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:,否則你會得到每一個數字而不僅僅是那些奇怪的。

基於跳的建議,你也可以這樣做:

evens = range(0, 10, 2) 

for n in evens: 
    print(n) 

range的第三個參數是步長

+1

你應該展示使用'range()'和step參數的更好的方法。 – hop

0

隨着範圍,你可以指定一個步進。

因此,所有你需要做的是:

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

如果你實際上並不需要的列表,只是一個迭代會做,你可以忽略列表生成:

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