我需要帮助创建迭代值列表。在这个例子中,我想得到x范围内的所有奇数。然后从中列出一个列表:
def x_list(x):
for i in range(x):
if x%2==0:
return i
由于return在遍历第一个对象后停止了该函数,因此我无法获取其余值并从中创建一个列表。 你能建议我应该用什么而不是"返回"? 谢谢。
答案 0 :(得分: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:
,否则您将获得每个数字,而不仅仅是奇数。
根据Hop的建议,你也可以这样做:
evens = range(0, 10, 2)
for n in evens:
print(n)
range
中的第3个参数是步长
答案 1 :(得分:0)
将ret
定义为函数顶部的列表,将其填入循环内。
循环结束后,将其返回。
def x_list(x):
ret = []
for i in range(x):
if i%2==0:
ret.append(i)
return ret
答案 2 :(得分:0)
使用范围,您可以指定步进。
因此,您需要做的就是:
def oddlist(x):
return list(range(1, x, 2))
如果你实际上不需要一个列表,只有一个可迭代的,你可以省略列表生成:
def oddlist(x):
return range(1, x, 2)