回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>下面的代码遍历介于1和5之间的数字,调用<code>forEachInRangeThisNumberLoopThreeTimes</code>函数传递一个数字。该函数接受一个数字并将其循环三次,然后将每次迭代附加到它在末尾返回的<code>numbers</code>列表中。你知道吗</p>
<pre><code>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)
</code></pre>
<p>打印内容:</p>
<pre><code>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]
</code></pre>
<p>我想使用<code>yield</code>,而不是将每个数字附加到<code>result</code>变量:</p>
<pre><code>def forEachInRangeThisNumberLoopThreeTimes(number):
for each in range(number):
for i in range(3):
yield i
</code></pre>
<p>现在当我执行时:</p>
<pre><code>for number in range(1, 5):
result = forEachInRangeThisNumberLoopThreeTimes(number)
</code></pre>
<p><code>result</code>不是我所期望的:</p>
<pre><code>1 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
2 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
3 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
4 <generator object forEachInRangeThisNumberLoopThreeTimes at 0x104ebfaf0>
</code></pre>
<p>错误在哪里?你知道吗</p>