Найти - Пользователи
Полная версия: Реализовать все возможные комбинации сложения двух элементов списка.
Начало » Python для новичков » Реализовать все возможные комбинации сложения двух элементов списка.
1
Alexanderrrrrror
Здравствуйте ! Помогите, пожалуйста. Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях.

То есть
есть массив:
 [1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ]
и нужно сделать так:
1) сначала к 1 прибавляем все числа от 2 до 8
2) потом переключаемся на 2-ку и прибавляем к ней все числа от 3 до 8, потом переключаемся на 3 и так далее… до 8
Но как это с циклами реализовать? У меня получается лишь вот так:
 splitter_user_input_1
index_1 =1
list_for_results = []
for i in splitter_user_input_1:
    if i == max(splitter_user_input_1):
        break
    while index_1 != len(splitter_user_input_1):
        result = int(i) + int(splitter_user_input_1[index_1])
        list_for_results.append(result)
        index_1+=1
print(list_for_results)
то есть ,если ввести 1 2 3, результатом будет список 3, 4 ,но нужно ещё переключиться на 2-ку и сложить её с 3-кой. Подскажите, пожалуйста, как надо доработать мой код, чтобы это реализовать ?
Alexanderrrrrror
Ребята! Получилось

 list_for_results = []
main_index = 0
alternative_list = splitter_user_input_1.copy()
while main_index != max(splitter_user_input_1):
    for i in alternative_list:
        if i == min(alternative_list):
            continue
        result = int(splitter_user_input_1[main_index]) + int(i)
        list_for_results.append(result)
    try :
        alternative_list.pop(0)
    except IndexError:
        break
    main_index+=1
print(list_for_results)
FishHook
 l = [1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ]
for index, i in enumerate(l[:-1]):
    for j in l[index + 1:]:
        print i, j
    
Alexanderrrrrror
FishHook
А как провернуть тоже самое только с тремя элементами ?
FishHook
Alexanderrrrrror
нужно три цикла
FishHook
Alexanderrrrrror
если ваша задача не учебная на циклы, то в питне есть готовое решение - пакет itertools и его функции combinations и permutations
Alexanderrrrrror
FishHook
Она учебная. То есть первым циклом в массиве
 [1, 2, 3, 4, 5, 6, 7, 8]
мы стоим сначала на единице потом перебираем вторым циклом от 2 до 8 -ки, а 3-м циклом перебираем от 3 -ки до восьмёрки ? и так пока итерация в первом цикле не остановится на 6 ???

FishHook
Alexanderrrrrror
лучше сразу решить в общем виде, т.е для любого количества элементов в “паре”
тут поможет рекурсия
это задача со звездочкой я бы сказал
Rodegast
> Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях

Ну это как бы декартово произведение…
 >>> s = [1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ]
>>> [ x+y for x in s for y in s ]
[2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10, 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12, 13, 7, 8,
9, 10, 11, 12, 13, 14, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 16]
>>> { x+y for x in s for y in s }
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB