1

来自这个问题 将数组的最后一个位置添加到同一个数组

我很好奇上述循环是否可以在列表理解中完成?

array = [3,4,2,5,4,5,8,7,8,9]
value = 10

for i in range(1,10):
   array[i] = array[i-1] + value

我想也许是海象接线员。

我的尝试给了我一个错误,导致无法使用赋值表达式和下标

[array[count] := val if count == 0 else array[count] := array[count-1] + value for count,val in enumerate(array)]

有任何想法吗?

4

3 回答 3

1

for 循环仅使用第一个元素并array用全新的项目覆盖。使用以下列表推导可以实现完全相同的结果:

array = [array[0] + i*value for i in range(len(array))]

输出:

[3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
于 2022-01-03T00:15:42.337 回答
0

我们可以观察到,如果我们得到的数组是result,那么result[i] = array[0] + i * value

例如:

  • result[0] = array[0]
  • result[1] = result[0] + value = array[0] + 1 * value
  • result[2] = result[1] + value = array[0] + 2 * value
  • 等等

从代码中可以看出,这通常可以表示为:

  • result[0] = array[0]
  • result[i] = result[i - 1] + valuei > 0.

然后,列表推导变为:

result = [array[0] + i * value for i in range(len(array))]
于 2022-01-02T22:49:10.123 回答
0

发生错误是因为array[count]它不是变量标识符,而是列表中的一个位置,array因此您无法为其分配任何内容。

相反,您可以使用以下...

array = [3,4,2,5,4,5,8,7,8,9]
value = 10

res = [(first_val := array[count]) if count==0 else array[count-1]+(count*value) for count,val in enumerate(array)]

print(res)
print(first_val)

输出:-

[3, 13, 14, 12, 15, 14, 15, 18, 17, 18]
3
于 2022-01-02T23:16:34.477 回答