как суммировать только 1 предыдущее значение в списке - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть список, и я хочу суммировать значение индекса (-1) с индексом текущего значения для всего списка


list = [-2, -2, -1, 1, -1, 1, 3, 5, 6, -2, -1, 0, -2, -1, -2, 2]

Ожидаемый результат:

new_list =[-2,-4,-3, 0, 0, 0, 4, 8, 11, 4, -3, -1, -2, -3, -3, 0]
new_list[0] = 0+ list[0]  = 0+ (-2) = -2
new_list[1] = list[0] + list[1] = (-2) + (-2) = -4
new_list[2] = list[1] + list[2] = (-2)+ (-1) = -3
new_list[3] = list[2] + list[3] = (-1)+ (1) = 0

Basically new_list[index] = list[index -1] + list[index]

Ответы [ 4 ]

2 голосов
/ 23 сентября 2019
list1 = [-2, -2, -1, 1, -1, 1, 3, 5, 6, -2, -1, 0, -2, -1, -2, 2]
new_list=[list1[0]]
for i in range(len(list1)-1):
    value=list1[i]+list1[i+1]
    new_list.append(value)


print(new_list)
Output:[-2,-4,-3, 0, 0, 0, 4, 8, 11, 4, -3, -1, -2, -3, -3, 0]
0 голосов
/ 23 сентября 2019

Если я правильно понимаю ваше требование, вы можете сделать это довольно легко с помощью pandas.Например:

import pandas as pd

# Create a pandas Series of values
s = pd.Series([-2, -2, -1, 1, -1, 1, 3, 5, 6, -2, -1, 0, -2, -1, -2, 2])
# Add the current value in the series to the 'shifted' (previous) value.
output = s.add(s.shift(1), fill_value=0).tolist()
# Display the output.
print(output)

Вывод:

[-2.0, -4.0, -3.0, 0.0, 0.0, 0.0, 4.0, 8.0, 11.0, 4.0, -3.0, -1.0, -2.0, -3.0, -3.0, 0.0]
0 голосов
/ 23 сентября 2019

Вы должны перебрать список и добавить числа следующим образом:

list = [-2, -2, -1, 1, -1, 1, 3, 5, 6, -2, -1, 0, -2, -1, -2, 2]

new_list = list[0] # We just take the first element of the list, because we don't add anything

for number, element in enumerate(list[1:]):
    new_list.append(element + list[number - 1])

Или более питоническим способом:

new_list = [list[0]].extend([element + list[number - 1] for number, element in enumerate (list[1:])
0 голосов
/ 23 сентября 2019
>>> list = [-2, -2, -1, 1, -1, 1, 3, 5, 6, -2, -1, 0, -2, -1, -2, 2]
>>> list_length = len(list)
>>> result_list = [list[0]]
>>> for i in range(list_length):
...     if not (i+1) == list_length:
...             result_list.append(list[i] + list[i+1])
...
>>> result_list
[2, -4, -3, 0, 0, 0, 4, 8, 11, 4, -3, -1, -2, -3, -3, 0]

Выше приведено решение вашего квеста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...