Python生成器输出是整数而不是数字

时间:2012-06-24 16:35:04

标签: python generator

我刚刚在一周前了解了Python中的生成器。根据我的理解,'yield'返回一个生成器对象而不是整个数组。

这是我为获取整数的数字而编写的代码:

def getDigits(m):
    for d in str(m):
        yield int(m)

这应该返回作为生成器对象传递给它的整数的数字。 但是当我这样做时:

for i in getDigits(123):
    print i

我得到的输出为:

123
123
123

而不是:

1
2
3

发生了什么事?我做错了吗?

5 个答案:

答案 0 :(得分:6)

应该是yield int(d)而不是yield int(m)

def getDigits(m):
    for d in str(m):
        yield int(d)

答案 1 :(得分:3)

我认为你的意思是

def getDigits(m):
    for d in str(m):
        yield int(d)

即。输出循环内的数字。

答案 2 :(得分:3)

错字:

def getDigits(m):
    for d in str(m):
        yield int(d)

d代替m

答案 3 :(得分:3)

尝试这样做:

yield int(d)

您正在迭代它,但甚至没有使用数字本身。

答案 4 :(得分:0)

更简单的形式是:

getDigits = lammbda m: map(int, str(m))