从Python中的迭代对象返回列表

时间:2017-07-04 10:48:15

标签: python

我需要帮助创建迭代值列表。在这个例子中,我想得到x范围内的所有奇数。然后从中列出一个列表:

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

由于return在遍历第一个对象后停止了该函数,因此我无法获取其余值并从中创建一个列表。 你能建议我应该用什么而不是"返回"? 谢谢。

3 个答案:

答案 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)