2017-05-01 44 views
0

所以,說我有一個int列表:在量化的方式Python列表添加常數特定指數區間(不使用numpy的)

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 

現在說我想從指數5加10至元素指數10(含),這樣手術後arr變爲:

arr = [0, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 11, 12, 13] 

什麼是禁食(或相當快)的方式來做到這一點在Python不使用numpy的?我正在尋找可能的非循環解決方案,而不是矢量化精神。

+0

'名單= array' –

+0

有沒有量化的方式,而不使用像庫'numpy'。 –

回答

2

的直接方式是罰款:

>>> arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 
>>> for i in range(5, 10 + 1): 
...  arr[i] += 10 
... 
>>> arr 
[0, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 11, 12, 13] 
>>> 
+0

謝謝!但我試圖避免for-loop,因爲在實際的項目中我需要多次這樣做。所以,尋找矢量化解決方案 – hmi

+0

@hmi然後你*需要numpy *。純Python中沒有矢量化解決方案。 –

1

您可以使用一個簡單的for循環實現這一目標:

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 

for i in range(5, 11): 
    arr[i] += 10 

print arr 
#outputs: [0, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 11, 12, 13]