Хранить элементы в списке, цифры которых составляют определенное значение - PullRequest
1 голос
/ 19 апреля 2019

Из списка найдите те значения, сложение которых составляет 9

aList=[81,26,27,19,108]
output, 81(because: 8+1),27(because: 2+7) and 108 (because:1+0+8) 

Я попробовал 2 подхода:

1-й подход: я не смог найти способ получить значение, просто получитьсумма

s=[81,18]  
sum=0
for l in s:
    while l:
            l,dig=divmod(l,10)
            sum=sum+dig

print(sum)

2-й подход: действительно противный.Возьмите отдельные значения из списка, преобразуйте их в строковые, чтобы разделить их, и снова преобразуйте в int.

s=[81]  #9

sum=0

for item in s: #81
    item=str(item) # 81 to string so I can get 8 and 1
    for i in item:
        while i:
            i =int(i)
            i,dig=divmod(i,10)
            sum=sum+dig

print(sum,item)

Проблема: В обоих случаях это работает только тогда, когда в списке есть одно значение.Когда у меня больше 1 значения aList = [81,18], оно дает мне сумму этих 2.

Я был бы признателен за некоторые подсказки / идеи по этому вопросу.Заранее спасибо.

1 Ответ

4 голосов
/ 19 апреля 2019

Вы можете использовать следующее понимание списка:

l = [81,26,27,19,108]
[i for i in l if sum(int(d) for d in str(i)) == 9]
# [81, 27, 108]

Что эквивалентно следующему для цикла:

res = []
for i in aList:
    temp = []
    for d in str(i):
        temp.append(int(d))
    if sum(temp) == 9:
        res.append(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...