在学习python的过程中,坚持理解这段代码。它是有效的,这本书要求我对它进行测试,我已经成功地进行了测试,但无法理解第一个索引是如何在代码中结束的。你知道吗
def double_preceding(values):
"""(list) -> NoneType
Replace each item in the list with twice the value of the preceding item, and replace the first item with 0.
>>> L = [l , 2 , 3]
>>> double_preceding(L)
>>> L
(0, 2, 4]
"""
if values != []:
temp = values[0]
values[0] = 0
for i in range(1, len(values)):
double = 2 * temp
temp = values[i]
values[i] = double
范围从索引1开始,它将跳过索引0,那么2的输出是如何进入的(从doctest)?这意味着值1增加了一倍,但是范围跳过了索引0。。。?你知道吗
还有一个问题,values[0] = 0
是否将[0]中的值改为0?值“1”是如何在输出列表中加倍的?你知道吗
这是如此简单的代码,但却让我失去了理智。 提前谢谢!谢谢你的时间
这是一个有趣的循环,我将带您了解它的工作原理。你知道吗
语句
if values != []:
检查循环是否为空。如果没有,就继续。你知道吗语句
temp = values[0]
在temp中存储values[0]
的原始值。这就是程序知道如何将1加倍的原因。所以在我们的例子中,temp
的值应该是1。你知道吗下一步
values[0] = 0
将第一个元素的值设置为0,但是我们仍然知道数组的原始值是什么,因为我们将它存储在temp
。你知道吗现在我们开始循环。循环从1一直到循环结束。你知道吗
变量double保存
temp
乘以2的值。所以在我们的例子中,因为temp
是1,所以double保持2。你知道吗现在语句
temp = values[i]
将循环的当前迭代值存储在temp
。在我们的示例中,我们将在第一次迭代中,因此由于values[1]
是2,temp中有2。你知道吗最后,语句
values[i] = double
在数组中存储double的值。目前,我们在索引1处,因为double
是2,这就是该索引将具有的内容。你知道吗我们可以再次循环这个序列。目前,我们的数组有{0,2,3}。在for的下一次迭代中,
double
是temp*2
。因为temp
是2,double
是4。现在double的值存储在数组的第二个索引中。行temp = values[i]
将在temp
中存储4,但这并不重要,因为循环已完成,因为数组的长度是3,循环仅在i<;3时重复。你知道吗完成后,最后一个数组是{0,2,4}。你知道吗
相关问题 更多 >
编程相关推荐