这会返回一个类型错误
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])
第二个版本之所以有效,是因为在列表推导完成之前,您不会重新分配变量,而不是每次都通过循环。
