Добавление целых чисел из заданного списка - PullRequest
0 голосов
/ 24 марта 2019

У меня проблема: если задан список чисел и число k, верните, складываются ли любые два числа из списка до k.

Например, если даны [10, 15, 3, 7] и k из 17, верните true, так как 10 + 7 равно 17.

Как я могу сложить вместе несколько элементов в списке целых чисел?

Код, который я написал:

a = [10, 15, 3, 7]
k = 17

while i < k:
    if i + i != k:
        return False
    else:
        return True

Ответы [ 3 ]

0 голосов
/ 24 марта 2019

Вы можете использовать any() с itertools.combinations:

from itertools import combinations

def sum_available(lst, k):
    return any(x + y == k for x, y in combinations(lst, 2))

Использование :

>>> a = [10, 15, 3, 7]
>>> k = 17
>>> sum_available(a, k)
True
0 голосов
/ 24 марта 2019

Для каждого числа num в списке рассчитайте k - num и проверьте, существует ли это число в вашем списке.

Для повышения производительности лучше превратить список в диктовку, которая подсчитывает, сколькораз каждое число встречается на входе.(Списки имеют O(n) тесты членства, в то время как у диктов есть O(1).)

a = [10, 15, 3, 7]
k = 17

from collections import Counter

occurences = Counter(a)  # count how many times each number occurs

for num in a:
    complement = k - num

    if complement not in occurences:
        continue

    # if the number is its own complement, check if it
    # occurred at least twice in the input
    if num == complement and occurences[num] < 2:
        continue

    print('The pair {} + {} adds up to {}'.format(num, complement, k))
    break
else:
    print('No combination of two numbers adds up to {}.'.format(k))
0 голосов
/ 24 марта 2019

это должно работать, но это очень медленный код:

a = [10, 15, 3, 7]
k = 17
done = False #define a flag
#use two for loops to check if two numbers add up to k
for i in a: 
    for p in a:
        if i + p == k:
            print(str(i) + '+' + str(p) + '=' + str(k))
            done = True
            break #to break out of inner loop
    if done:
        break #to break out of outer loop
if done == False:
    print('No such numbers exist.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...