#python #list #sum
#python #Список #сумма
Вопрос:
Из списка найдите те значения, добавление которых составляет 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. Подумайте о том, как настроены циклы — и когда вам нужно получить значение? Когда вам нужно сбросить переменную sum?
Ответ №1:
Вы могли бы использовать следующее понимание списка:
l = [81,26,27,19,108]
[i for i in l if sum(int(d) for d in str(i)) == 9]
# [81, 27, 108]
Что эквивалентно следующему циклу for:
res = []
for i in aList:
temp = []
for d in str(i):
temp.append(int(d))
if sum(temp) == 9:
res.append(i)
Комментарии:
1. Спасибо, 1 быстрый вопрос, является ли это версией цикла for для понимания этого списка: для элемента в l: item=str (item) для i в item: результат = сумма (int (i)) печать (результат)