从列表中找出加起来为9的那些值
aList=[81,26,27,19,108]
output, 81(because: 8+1),27(because: 2+7) and 108 (because:1+0+8)
我尝试了2种方法:
第一种方法:我找不到一种获取值的方法,只是求和
s=[81,18]
sum=0
for l in s:
while l:
l,dig=divmod(l,10)
sum=sum+dig
print(sum)
第二种方法:确实很讨厌。从列表中获取单个值,转换为字符串以将其分开,然后再次转换为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的总和。
我希望对此有一些提示/想法。提前致谢。
答案 0 :(得分:4)
您可以使用以下列表理解:
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)