【发布时间】:2021-06-14 06:58:13
【问题描述】:
我想知道如何从一系列值中获取一系列范围。我的意思是假设我有一个数字列表:list_values = [4, 3, 4, 4],
我想把它转换成这样的一系列范围(暂时忽略数据的结构):
0: 0 - 4
1: 4 - 8
2: 8 - 13
3: 13 - 18
第 i 个范围的大小对应于数字列表中的第 i 个索引。
这是我迄今为止尝试过的(以及相同基本逻辑的其他变体)。为简单起见,并且因为我坚持这一点,我现在只计算了“开始”值,即范围的开始值(0、4、8、13 ...):
range_start = [0]
for i, list_values in enumerate(list):
range_start[i+1] = range_start[i] + list_values[i] + 1
这里的逻辑本质上是递归的,即开始范围的下一个值等于前一个值加上第 (i-1) 个 list_value 加上 1。注意循环的第一次迭代,range_start[1] = range_start[0] + list_value[0] + 1 = 4
但是,我不断收到错误消息,提示 TypeError: 'int' object is not subscriptable。我很困惑,因为我只做整数数学,而不是任何子集。
我希望输出是某种形式的范围,如类似于此的列表或元组:
[[0, 4], [4, 8], [8, 13], [13, 18]]
任何帮助都很好,谢谢!
【问题讨论】:
-
list是python中的保留关键字,请避免使用。 -
是的,是的。为了便于阅读,我更改了代码中的变量名称。