#python #numpy
#python #numpy
Вопрос:
У меня четный список чисел:
lst = [2,3,4,1,6,7]
Мне нужно вычесть второе число каждой пары и суммировать результат всех пар, ниже результата:
out = 3-2 1-4 7-6
Есть ли какое-нибудь элегантное решение? Цените любые подсказки!
Ответ №1:
>>> sum(lst[1::2]) - sum(lst[::2])
-1
Ответ №2:
Простой способ сделать это
import numpy as np
lst = np.array([2,3,4,1,6,7])
print(np.sum(lst[1::2] - lst[::2]))
Ответ №3:
Вы могли бы использовать enumerate
sum(e if c%2 else -e for c,e in enumerate(lst))
Ответ №4:
Вы могли бы сделать что-то вроде этого
import numpy as np
lst = [2, 3, 4, 1, 6, 7]
lst = np.array(lst)
# array([2 3 4 1 6 7])
lst = np.split(lst, len(lst) / 2)
# [array([2, 3]), array([4, 1]), array([6, 7])]
lst = [arr[1] - arr[0] for arr in lst]
# [1, -3, 1]
lst = sum(lst)
print(lst) # -1