我刚刚在一周前了解了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
发生了什么事?我做错了吗?
答案 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))