Python 将字符串中的数字加倍并应用它们

Python 将字符串中的数字加倍并应用它们,python,python-3.x,Python,Python 3.x,例如:`a=“452398”我想取所有的索引(一个接一个的数字),比如(4,2,9)将它们加倍==(8,4,18) 下一步检查双精度数字是否大于9,如果需要从9(8,4,9)中减去,最后我想在a(“854398”)中添加数字,它必须是一个字符串。知道怎么做吗 我厌倦了循环使用范围,len skip我把所有的东西都整理好了,直到最后一步,但我无法应用“a”中的数字。所以删除了整个循环:(这就是您所描述的,但您为什么要这样做: a = "452398" a_list = [int(x) for x

例如:`a=“452398”我想取所有的索引(一个接一个的数字),比如(4,2,9)将它们加倍==(8,4,18)


下一步检查双精度数字是否大于9,如果需要从9(8,4,9)中减去,最后我想在a(“854398”)中添加数字,它必须是一个字符串。知道怎么做吗


我厌倦了循环使用范围,len skip我把所有的东西都整理好了,直到最后一步,但我无法应用“a”中的数字。所以删除了整个循环:(

这就是您所描述的,但您为什么要这样做:

a = "452398"
a_list = [int(x) for x in a]
numbers = [x*2 for x in a_list[::2]]
numbers = [x-9 if x>9 else x for x in numbers]
result = [j for i in zip(numbers,a_list[1::2]) for j in i]
result = map(str, result)
result = ''.join(result)

下面是使用列表理解的方法

A = "452398"
res = "".join([(str(min(int(a) * 2, 9)) if idx % 2 == 0 else a) for idx, a in enumerate(A)])

string
是不可变的,因此首先您应该使用
string

a = '452398'
new = list(a)
然后创建一个
循环
来执行条件并更改列表中字符的值

for i in range(0,len(new),2):
    num = int(new[i]) * 2
    if num  > 9:
        new[i] = num - 9
    else:
        new[i] = num
现在使用新的字符列表覆盖变量
a
的值

a = ''.join(map(str,new))
这是全部代码

a = '452398'
new = list(a)
for i in range(0,len(new),2):
    num = int(new[i]) * 2
    if num  > 9:
        new[i] = num - 9
    else:
        new[i] = num

a = ''.join(map(str,new))

print(a)

其中一个简单的答案可能是

a = '452398'
b = []

for i, x in enumerate(a):
    if (i%2 == 0):
        res = int(x) * 2
        if len(str(res)) > 1:
            res = res - 9
        b.append(res)
    else:
        b.append(x)

b = map(str, b)
b = ''.join(b)
print(b)

请编辑问题以显示您尝试过的内容,并显示您遇到的具体障碍。有关更多信息,请参阅。检查双位数是否大于9,如果需要从9中减去,我可以理解。但新代码[i]让我困惑。您可以优雅地解释一下吗?请