下面的代码遍历1到5之间的数字,调用forEachInRangeThisNumberLoopThreeTimes
函数将其传递给一个数字。该函数接受一个数字并将其循环三次,将每次迭代附加到最后返回的numbers
列表中。如何使用yield而不是return
def forEachInRangeThisNumberLoopThreeTimes(number):
numbers = []
for each in range(number):
for i in range(3):
numbers.append(i)
return numbers
result = []
for number in range(1, 5):
print number, forEachInRangeThisNumberLoopThreeTimes(number)
它打印:
1 [0, 1, 2]
2 [0, 1, 2, 0, 1, 2]
3 [0, 1, 2, 0, 1, 2, 0, 1, 2]
4 [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]
相反追加后的数字result
变量我想用yield
:
def forEachInRangeThisNumberLoopThreeTimes(number):
for each in range(number):
for i in range(3):
yield i
现在,当我执行:
for number in range(1, 5):
result = forEachInRangeThisNumberLoopThreeTimes(number)
的result
是不是我所期望:
1 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
2 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
3 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
4 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
哪里错误?