2016-05-21 3 views
3

Я работаю над написанием функции, в которой дается массив:Python алгоритм массива

arrayA = [2,3,1] 

Функция должна возвращать новый массив, в котором:

newArray = [2,5,6] 

Это почти как Фибоначчи функция.

newArray[0] = arrayA[0] 
newArray[1] = arrayA[0] + arrayA[1] 
newArray[2] = arrayA[1] + arrayA[2] + arrayA[3] 

Heres my code до сих пор, но всегда заканчивается пустым списком. arrayA передается как параметр.

def generateNewArray(A): 
    A=[] 
    newArray=[] 
    for i in range(len(A)): 
     newArray[i]=A[i]+A(i+1) 
    return newArray 
+6

Что такое точка 'А = []'? –

+0

@Jess возвращает пустой список, потому что вы объявляете A = [], который в основном говорит, пустой мой список, когда вы начинаете свою функцию – glls

+0

ну, конечно, одна из проблем: P –

ответ

2
print [sum(A[:i]) for i in range(1,len(A)+1)] 

Я думаю ... Я думаю, что на самом деле Theres накопленная сумма где-то ... встроенные или, может быть, его в NumPy

numpy.cumsum(A) 
+0

Спасибо! работает отлично! – Jess

0

Вы также можете использовать функциональный шаблон программирования:

Попробуйте это:

def generateNewArray(inputArray): 
    return map(lambda x: sum(inputArray[:x]), xrange(1, len(inputArray) + 1)) 

Например:

In [7]: generateNewArray([2, 3, 1]) 
Out[7]: [2, 5, 6] 
Смежные вопросы