0

一周前我刚刚了解了 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

到底是怎么回事?难道我做错了什么?

4

5 回答 5

6

它应该yield int(d)代替yield int(m)

def getDigits(m):
    for d in str(m):
        yield int(d)
于 2012-06-24T16:37:09.687 回答
3

我想你的意思是

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

即输出循环内的数字。

于 2012-06-24T16:37:28.143 回答
3

错字:

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

d而不是m.

于 2012-06-24T16:37:33.783 回答
3

尝试这样做:

yield int(d)

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

于 2012-06-24T16:38:03.860 回答
0

更简单的形式是:

getDigits = lammbda m: map(int, str(m))
于 2017-06-18T08:05:58.557 回答