Форум сайта python.su
Здравствуйте ! Помогите, пожалуйста. Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях.
То есть
есть массив:
[1, 2 ,3 ,4 ,5 ,6 ,7 ,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)
Отредактировано Alexanderrrrrror (Март 25, 2020 11:29:24)
Офлайн
Ребята! Получилось
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)
Офлайн
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
Офлайн
FishHook
А как провернуть тоже самое только с тремя элементами ?
Офлайн
Alexanderrrrrrorнужно три цикла
Офлайн
Alexanderrrrrrorесли ваша задача не учебная на циклы, то в питне есть готовое решение - пакет itertools и его функции combinations и permutations
Офлайн
FishHook
Она учебная. То есть первым циклом в массивемы стоим сначала на единице потом перебираем вторым циклом от 2 до 8 -ки, а 3-м циклом перебираем от 3 -ки до восьмёрки ? и так пока итерация в первом цикле не остановится на 6 ???[1, 2, 3, 4, 5, 6, 7, 8]
Отредактировано Alexanderrrrrror (Март 25, 2020 12:06:58)
Офлайн
Alexanderrrrrror
лучше сразу решить в общем виде, т.е для любого количества элементов в “паре”
тут поможет рекурсия
это задача со звездочкой я бы сказал
Офлайн
> Как можно выполнить сложение всех элементов массива по парам и во всех возможных комбинациях
Ну это как бы декартово произведение…
>>> 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}
Офлайн