Суммы элементов списка

Дан список целых чисел (пример: a=[1, 2, 3, 4]). Необходимо найти суммы элементов этого списка, т.е. на выходе должен получиться список b=[3, 4, 5, 5, 6, 7].

Ничего в голову не приходит, поиск выдает только общую сумму всех элементов в списке, возможно некорректно запрос формулировался.


Ответы (2 шт):

Автор решения: TigerTV.ru

Можно такой вариант:

from itertools import combinations

a = [1,2,3,4]
b = [sum(i) for i in combinations(a, 2)]
print(b)

а можно использовать 2 for:

a = [1,2,3,4]
n = len(a)
b = [a[i]+a[j] for i in range(n) for j in range(i+1,n)]
print(b)

а можно с итераторами:

from itertools import tee

a = [1,2,3,4]
b = []
it1, = tee(a, 1)
for i in it1:
    it2 = tee(it1)[1]
    for j in it2:
        b.append(i+j)
print(b)

ну или тоже самое только с генератором:

from itertools import tee

def gen(a):
    it1, = tee(a, 1)
    for i in it1:
        _, it2 = tee(it1)
        for j in it2:
            yield i+j

a = [1,2,3,4]
*b, = gen(a)
print(b)

→ Ссылка
Автор решения: Danis
a = [1, 2, 3, 4]
b = []

n = len(a) 
for i in range(n):
    for j in range(i+1, n):
        b.append(a[i] + a[j])

print(b)
→ Ссылка