我需要帮助创建一个迭代值列表。在这个例子中,我想获得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