2017-07-04 46 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)