Уведомления

Группа в Telegram: присоединиться

#1 Март 25, 2020 11:26:56

Alexanderrrrrror
Зарегистрирован: 2020-02-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

Здравствуйте ! Помогите, пожалуйста. Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях.

То есть
есть массив:

 [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 (Март 25, 2020 11:29:24)

Офлайн

#2 Март 25, 2020 11:54:04

Alexanderrrrrror
Зарегистрирован: 2020-02-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

Ребята! Получилось

 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)

Офлайн

#3 Март 25, 2020 11:57:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7353
Репутация: +  508  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

 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
    



Офлайн

#4 Март 25, 2020 12:00:12

Alexanderrrrrror
Зарегистрирован: 2020-02-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

FishHook
А как провернуть тоже самое только с тремя элементами ?

Офлайн

#5 Март 25, 2020 12:01:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7353
Репутация: +  508  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

Alexanderrrrrror
нужно три цикла



Офлайн

#6 Март 25, 2020 12:02:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7353
Репутация: +  508  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

Alexanderrrrrror
если ваша задача не учебная на циклы, то в питне есть готовое решение - пакет itertools и его функции combinations и permutations



Офлайн

#7 Март 25, 2020 12:06:14

Alexanderrrrrror
Зарегистрирован: 2020-02-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

FishHook
Она учебная. То есть первым циклом в массиве
 [1, 2, 3, 4, 5, 6, 7, 8]
мы стоим сначала на единице потом перебираем вторым циклом от 2 до 8 -ки, а 3-м циклом перебираем от 3 -ки до восьмёрки ? и так пока итерация в первом цикле не остановится на 6 ???

Отредактировано Alexanderrrrrror (Март 25, 2020 12:06:58)

Офлайн

#8 Март 25, 2020 12:13:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 7353
Репутация: +  508  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

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



Офлайн

#9 Март 27, 2020 11:03:21

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2262
Репутация: +  166  -
Профиль   Отправить e-mail  

Реализовать все возможные комбинации сложения двух элементов списка.

> Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях

Ну это как бы декартово произведение…

 >>> 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}



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version