如何存储迭代的最后值?
我刚开始学Python,有个简单的问题。
我写了一个循环,它会遍历一个列表里的值,然后把这些值转换成一个圆的角度(乘以360)。现在我想做的是存储上一次循环的值。比如,运行完这段代码后,我想得到:
79.2
118.08
21.6
29.52
10.8
7.2
7.2
代码:
for i in range(len(percentages_minus_index)):
other_segment_angles = percentages_minus_index[i] * 360
简单来说,如果第一个值是79.2,我想在循环中把它存到一个变量里,然后在下一次循环时替换掉这个值。比如:
第一次循环:79.2,之前的值 = 没有 第二次循环:118.08,之前的值 = 79.2
……等等等等
有人能帮帮我吗?
3 个回答
percentages_minus_index = [23,14,16,1]
previousValues = [None]*len(percentages_minus_index)
for i in range(len(percentages_minus_index)):
other_segment_angles = percentages_minus_index[i] * 360
print(other_segment_angles)
if i > 0:
previousValues[i] = percentages_minus_index[i-1] * 360
print(previousValues[i])
这段代码的意思是,首先定义了一个叫做 percentages_minus_index
的列表,里面有四个数字:23、14、16 和 1。
接着,创建了一个叫 previousValues
的列表,里面的每个位置都先放一个 None
,这个列表的长度和 percentages_minus_index
一样。
然后,代码开始一个循环,循环的次数和 percentages_minus_index
列表的长度相同。在每次循环中:
1. 计算当前数字(percentages_minus_index[i]
)乘以360,得到一个叫 other_segment_angles
的值,并把这个值打印出来。
2. 如果当前的索引 i
大于0,也就是说不是第一个数字,就会计算前一个数字(percentages_minus_index[i-1]
)乘以360,并把这个结果放到 previousValues
列表的对应位置,然后打印出来。
你是说像这样的吗?
percentages_minus_index = [23,14,16,1]
previousValues = [None]*len(percentages_minus_index)
for i in range(len(percentages_minus_index)):
other_segment_angles = percentages_minus_index[i] * 360
print(other_segment_angles)
if i > 0:
previousValue[i] = percentages_minus_index[i-1] * 360
print(previousValue[i])
你可以使用另一个变量来存储之前的值,而且有一种更好的方法来循环一个列表,像这样:
previous = None
for percentage in percentages_minus_index:
other_segment_angles = percentage * 360
print previous
previous = other_segment_angles
不过我想知道你为什么要这么做,因为你的程序并不依赖于之前的值。例如,如果我想计算 n
个数字的总和(不使用 sum
),那么:
previous = 0
for number in range(10):
temp = previous + number
previous = temp