如何用数字之和替换大于9的数字?
现在,列表乘以列表=
[1, 4, 3, 8, 5, 12, 7, 16, 2]我需要将它改为(例如,num 12和num 16,替换为(3)和(7) )。
[1, 4, 3, 8, 5, 3, 7, 7, 2]我可以使用sum(map(int, str(number)))来添加数字,但如何通过索引更改同一列表中的值?
def check_id_valid(id_number):
    updatedid = map(int, str(id_number))
    multipliedlist = [i * 1 if j % 2 == 0 else i * 2 for j, i in enumerate(updatedid)]
    # for index, number in enumerate(multipliedlist):
    #     if multipliedlist[index] > 9:
    #         multipliedlist[index] = sum(map(int, str(number)))
    #     else:
    #         multipliedlist[index] == number #statement has no effect error.
print(check_id_valid(123456782))对于python来说,很抱歉,如果没有解释的话,它应该是
我感谢你的帮助,谢谢
发布于 2020-05-08 11:11:18
使用列表理解
Ex:
data = [1, 4, 3, 8, 5, 12, 7, 16, 2]
print([sum(map(int, str(i))) if i > 9 else i for i in data])输出:
[1, 4, 3, 8, 5, 3, 7, 7, 2]发布于 2020-05-08 11:11:38
将您的任务分解为组成部分,即
def sum_digits(number):
    # Convert the number into a string (10 -> "10"),
    # iterate over its characters to convert each of them
    # back to an integer, then use the `sum()` builtin for
    # summing.
    return sum(int(digit_char) for digit_char in str(number))
def sum_all_digits(numbers):
    return [sum_digits(number) for number in numbers]
print(sum_all_digits([1, 4, 3, 8, 5, 12, 7, 16, 2]))预期产出
[1, 4, 3, 8, 5, 3, 7, 7, 2]发布于 2020-05-08 11:32:49
若要按索引更改值,可以使用枚举()函数:
def sum_digits(n):
    r = 0
    while n:
        r, n = r + n % 10, n // 10
    return r
multipliedlist = [1, 4, 3, 8, 5, 12, 7, 16, 2]
for i, n in enumerate(multipliedlist):
    multipliedlist[i] = sum_digits(multipliedlist[i])
print(multipliedlist)1,4,3,8,5,3,7,7,2
https://stackoverflow.com/questions/61677731
复制相似问题