Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python生成器的输出是整数而不是数字_Python_Generator - Fatal编程技术网

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

Python生成器的输出是整数而不是数字,python,generator,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 发生了什么事?我做错什么

一周前,我刚刚学习了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

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

应该是
收益率int(d)
而不是
收益率int(m)

我想你是说

def getDigits(m):
    for d in str(m):
        yield int(d)
i、 e.在循环内输出数字。

输入错误:

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

d
代替
m

试着这样做:

yield int(d)
您正在遍历它,但甚至不使用数字本身。

更简单的形式是:

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

请使用
undersore\u分隔的
函数名,而不是
camelCased
。你是说它应该是get_Digits()??还有,为什么?我不能接受答案,直到20分钟后张贴的问题。接受。
getDigits = lammbda m: map(int, str(m))