python - 如何将列表中的元素用作 range() 中的参数?
问题描述
所以我有一个 for 循环for i in range(0, arr[0]):
,我希望函数的 stop 参数range()
根据数组中第一个元素的值是可变的。然而,当我这样做时,即使 的值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)
这是一个挑战
可以在该链接中找到对角差分函数的用途。
解决方案
尝试这个:
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)
我这样做是因为我阅读了黑客级别的挑战
推荐阅读
- kubernetes - Prometheus / Kubernetes 显示 InstanceDown / PrometheusTargetMissing
- react-native - React Native Error: "Animated.event now requires a second argument for options"
- ios - 在 Swift 中测试呈现视图控制器的问题
- c++ - bison 3.5.1 坚持为默认操作显式编写代码,假设 C 风格联合
- vb.net - 如何在 VB.NET 中创建只读计算属性而不指定完整的 Get / End Get 语法?
- doxygen - Doxygen MACRO_EXPANSION 根本不工作
- python - 目前用于带有 python 3.7 (firefox) 的 freebsd 的 geckodriver
- c++ - 为什么〜future在由std :: async创建而不是由其他人创建时阻塞
- python - Dagster:如何重新执行管道的失败步骤?
- c# - 更新 DataGridView 中的单元格,否则创建新行