我需要幫助創建一個迭代值列表。在這個例子中,我想獲得x範圍內的所有奇數。然後從它做一個清單:從Python中的迭代對象返回列表
def x_list(x):
for i in range(x):
if x%2==0:
return i
由於返回通的第一個對象迭代後停止的功能,我無法獲得其餘值,並從它創建一個列表。 你能建議我應該用什麼來代替「返回」嗎? 謝謝。
我需要幫助創建一個迭代值列表。在這個例子中,我想獲得x範圍內的所有奇數。然後從它做一個清單:從Python中的迭代對象返回列表
def x_list(x):
for i in range(x):
if x%2==0:
return i
由於返回通的第一個對象迭代後停止的功能,我無法獲得其餘值,並從它創建一個列表。 你能建議我應該用什麼來代替「返回」嗎? 謝謝。
將ret
定義爲函數頂部的列表,將其填充到循環中。
循環結束後,返回它。
def x_list(x):
ret = []
for i in range(x):
if i%2==0:
ret.append(i)
return ret
如果您使用的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
的第三個參數是步長
你應該展示使用'range()'和step參數的更好的方法。 – hop
隨着範圍,你可以指定一個步進。
因此,所有你需要做的是:
def oddlist(x):
return list(range(1, x, 2))
如果你實際上並不需要的列表,只是一個迭代會做,你可以忽略列表生成:
def oddlist(x):
return range(1, x, 2)
感謝編輯我的初始代碼,這是我的第一篇文章,我仍然在找出適當的格式。 – gidHxly
沒問題..你有一個帶括號的按鈕'{}',按下這個按鈕,它會爲你生成一個代碼區域 –
發電機功能比這種蓄電池風格更可取,因爲op已經/幾乎已經存在。 – hop