如何查找连续数字之间的百分比变化?

2024-09-24 02:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图找出两个连续数字之间的百分比变化,比如第一个循环中2367700和2113425之间的百分比变化。2113425和2107145用于第二个循环等。当前,代码不起作用,并且给我一个错误,表示“int”对象不可下标。谢谢你的帮助

perchange = [2367700,2113425,2107145,2125476,2232400,2325301,2550833,2761819,2893455,3123843]
def percentagechange(old,new):
   return((float(new)-old)/abs(old)*100)
for idx,val in enumerate(perchange):
   pc = percentagechange(val[idx], val[idx+1])
   print(pc)

Tags: 对象代码newreturndef错误数字val
3条回答

您可以这样做:

perchange = [2367700,2113425,2107145,2125476,2232400,2325301,2550833,2761819,2893455,3123843]

percentagechange = [0]
for i in range(1, len(perchange)):
    percentagechange.append(round((abs(perchange[i]-perchange[i-1]) / perchange[i-1]) * 100, 2))
print(percentagechange)

输出:

[0, 10.74, 0.3, 0.87, 5.03, 4.16, 9.7, 8.27, 4.77, 7.96]

您不需要使用enumerate()

此外,您需要索引列表,而不是整数。当您执行val[idx]时,val是一个整数,因此您会得到一个错误

perchange = [2367700,2113425,2107145,2125476,2232400,2325301,2550833,2761819,2893455,3123843]
def percentagechange(old,new):
    return((float(new)-old)/abs(old)*100)
for idx in range(len(perchange)-1):
    pc = percentagechange(perchange[idx], perchange[idx+1])
    print(pc)

试试这个:

perchange = [2367700,2113425,2107145,2125476,2232400,2325301,2550833,2761819,2893455,3123843]
pc = [100 * y / x for x,y in zip(perchange, perchange[1:])]
print(pc)

相关问题 更多 >