Возможные комбинации суммы двух элементов списка - PullRequest
1 голос
/ 07 июня 2019

У меня есть список длиной четыре (например, nums = [4, 1, 8, 7]).Я хочу найти разные возможные комбинации суммы двух элементов этого списка.Я написал следующие коды, и он работает правильно.Как я могу сделать это проще?Обратите внимание, что мы не можем использовать какие-либо пакеты.

my_sum = [i + j for i , j in zip(nums, nums[1:])] + [i + j for i , j in zip(nums, nums[2:])]  + [i + j for i , j in zip(nums, nums[3:])] 

1 Ответ

2 голосов
/ 07 июня 2019

Я предоставляю решение, которое также заботится о дубликатах. Вы можете использовать набор и понимание списка, без использования какого-либо пакета. Прокрутите список и возьмите сумму всех различных элементов. Условие i1!=i2 гарантирует, что вы добавляете различные элементы

Дело 1

nums = [4, 1, 8, 7]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [5, 8, 9, 11, 12, 15]

Дело 2

nums = [1, 1, 8, 7]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [8, 9, 2, 15]

Дело 3

nums = [4,1,4]
my_sum = list(set([n1+n2 for i1, n1 in enumerate(nums) for i2, n2 in enumerate(nums) if i1!=i2] ))
# [8, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...