首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果条件为真,则替换列表中的值。

如果条件为真,则替换列表中的值。
EN

Stack Overflow用户
提问于 2020-05-08 11:06:45
回答 3查看 577关注 0票数 1

如何用数字之和替换大于9的数字?

现在,列表乘以列表=

代码语言:javascript
运行
复制
[1, 4, 3, 8, 5, 12, 7, 16, 2]

我需要将它改为(例如,num 12和num 16,替换为(3)和(7) )。

代码语言:javascript
运行
复制
[1, 4, 3, 8, 5, 3, 7, 7, 2]

我可以使用sum(map(int, str(number)))来添加数字,但如何通过索引更改同一列表中的值?

代码语言:javascript
运行
复制
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来说,很抱歉,如果没有解释的话,它应该是

我感谢你的帮助,谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-08 11:11:18

使用列表理解

Ex:

代码语言:javascript
运行
复制
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])

输出:

代码语言:javascript
运行
复制
[1, 4, 3, 8, 5, 3, 7, 7, 2]
票数 3
EN

Stack Overflow用户

发布于 2020-05-08 11:11:38

将您的任务分解为组成部分,即

  • 用它的数字
  • 之和替换一个数字,用于数字列表。

代码语言:javascript
运行
复制
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]))

预期产出

代码语言:javascript
运行
复制
[1, 4, 3, 8, 5, 3, 7, 7, 2]
票数 3
EN

Stack Overflow用户

发布于 2020-05-08 11:32:49

若要按索引更改值,可以使用枚举()函数:

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61677731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档