所以我有一个for循环for i in range(0, arr[0]):
,并且我希望range()
函数的stop参数根据数组中第一个元素的值而可变。但是,当我这样做时,即使arr[0]
的值是一个整数,python也会返回并给我一个错误,提示TypeError: 'list' object cannot be interpreted as an integer
。如何将列表中的此元素转换为整数,或者找到另一种使用其值作为参数的方法?
我也在循环中使用相同的值来递增和递减变量。
谢谢!
完整代码:
def diagonalDifference(arr):
stopInt = arr[0]
primary = 0
secondary = 0
pArrIndex = 1
sArrIndex = -1
for i in range(0, stopInt):
primary += arr[pArrIndex]
pArrIndex += arr[0]
for i in range(0, stopInt):
secondary += arr[sArrIndex]
sArrIndex -= arr[0]
return abs(primary - secondary)
这是挑战here
对角线差异函数的用途可以在该链接中找到。
答案 0 :(得分:1)
尝试一下:
def diagonalDifference(arr):
a=sum(v[i] for i,v in enumerate(arr))
b=sum(v[-i] for i,v in enumerate(arr,1))
return abs(a - b)
之所以这样做,是因为我阅读了Hacker-rank挑战