Skip to main content
 首页 » 编程设计

python之为什么会出现 TypeError : 'int' object is not subscriptable using for loop and not with list-comprehension in python

2025年05月04日13dudu

这会返回一个类型错误

difference = [1, 2, 3, 4, 5] 
 
for i in range(len(difference)-1): 
    difference = difference[i+1] - difference[i] 

但这很好用

difference = [difference[i+1]-difference[i] for i in range(len(difference)-1)] 

我在这里错过了什么?我以为他们是一样的。

请您参考如下方法:

您正在循环期间重新分配变量 difference。在第一次迭代后,它不再包含列表,它包含 difference[1] - difference[0] 的结果,这是一个整数。

您应该为结果创建一个新列表。

newdiff = [] 
for i in range(len(difference)-1): 
    newdiff.append(difference[i+1] - difference[i]) 

第二个版本之所以有效,是因为在列表推导完成之前,您不会重新分配变量,而不是每次都通过循环。