對(duì)列表中的單個(gè)元素求和

我試圖對(duì)列表中“單個(gè)”元素的列表求和。我見(jiàn)過(guò)很多帖子使用sum,但它們只對(duì)整個(gè)列表進(jìn)行求和,而不是列表中的單個(gè)數(shù)字。這通常用于數(shù)字命理學(xué),因此需要求和并將每個(gè)元素解析為其9進(jìn)制等效值。

Current result:

numsum = [1, 23, 45, 76, 123]
output = sum(numsum)
print(output)

Output:  268

Required result:

output: [1, 5, 9, 4, 6]

我曾嘗試使用for循環(huán),但沒(méi)有真正成功。有人知道最pythonic的方法是什么嗎?

? 最佳回答:

看起來(lái)你想對(duì)每個(gè)數(shù)字的位數(shù)求和。

您可以在列表理解中使用到字符串的中間轉(zhuǎn)換:

numsum = [1, 23, 45, 76, 123]

out = [sum(map(int, str(n))) for n in numsum]

一種更為數(shù)值化的方法可能是使用重復(fù)除以10:

def sum_digits(n):
    SUM = 0
    while n>0:
        n, mod = divmod(n, 10)
        SUM += mod
    return SUM

out = [sum_digits(n) for n in numsum]

output: [1, 5, 9, 13, 6]

recursive approach:

如果必須將數(shù)字減少到一個(gè)位數(shù)(76->13->4),則可以將sum_digit函數(shù)轉(zhuǎn)換為遞歸函數(shù):

def sum_digits(n):
    SUM = 0
    while n>0:
        n, mod = divmod(n, 10)
        SUM += mod
    return SUM if SUM < 10 else sum_digits(SUM)

out = [sum_digits(n) for n in numsum]

output: [1, 5, 9, 4, 6]

主站蜘蛛池模板: 亚洲国产成人久久综合一区| 一区二区精品久久| 国产激情一区二区三区在线观看 | 97久久精品午夜一区二区| 97一区二区三区四区久久 | 精品无码人妻一区二区免费蜜桃| 免费在线观看一区| 爆乳无码AV一区二区三区| 亚洲综合无码一区二区三区| 在线精品国产一区二区三区| www.亚洲一区| 高清在线一区二区| 精品一区二区三区在线视频观看 | 久久国产高清一区二区三区| 精品视频一区在线观看| 国产一区二区在线|播放| 亚洲AV无码一区二区三区鸳鸯影院 | 制服丝袜一区在线| 色一乱一伦一图一区二区精品| 国产内射999视频一区| 国产精品无码一区二区三区电影| 一区二区3区免费视频| 在线精品亚洲一区二区三区| 精品亚洲综合在线第一区| 成人免费区一区二区三区| 国产在线精品一区二区中文| 亚洲中文字幕无码一区二区三区 | 99久久国产精品免费一区二区| 国产精品女同一区二区久久| 一区二区三区影院| 亚洲视频一区调教| 学生妹亚洲一区二区| 国产成人欧美一区二区三区 | 国产成人综合精品一区| 国产免费播放一区二区| 国产一区二区精品| tom影院亚洲国产一区二区| 日本国产一区二区三区在线观看| 国产一区二区三区美女| 亚洲熟妇av一区二区三区漫画| 亚洲天堂一区在线|