首页 > 解决方案 > 在没有 for 循环的情况下将数组中的所有条目增加 'n'

问题描述

我有一个数组:

arr = [5,5,5,5,5,5]

我想将 arr 中的特定范围增加“n”。所以如果n=2和 范围是[2,5]。数组应如下所示:

arr = [5,5,7,7,7,5]

对于我试图解决的问题,需要在没有 for 循环的情况下执行此操作。

试过:

arr[2:5] = [n]*3

但这显然会替换条目并变为:

arr = [5,5,3,3,3,5]

任何建议都会受到高度评价。

标签: pythonarraysrange

解决方案


n = 2
arr_range = slice(2, 5)                                                                                                                                                                           
arr = [5,5,7,7,7,5]                                                                                                                                                             
arr[arr_range] = map(lambda x: x+n, arr[arr_range])                                                                                                                                         
# arr                                                                                                                                                                             
# [5, 5, 9, 9, 9, 5]

但我建议使用 numpy ...

import numpy as np
n = 2
arr_range = slice(2, 5)
arr = np.array([5,5,7,7,7,5])
arr[arr_range] += n

推荐阅读