加法到整数的数组形式:假设我有A=[1,2,3]
,K = 50000
,我想把这两个加起来,得到A=[5,0,1,2,3]
在我添加它们并将进位转换为列表之后,但不知何故我无法打印完整的数组:
def addToArrayForm(A, K):
A[-1] += K
for i in range(len(A) - 1, -1, -1):
carry, A[i] = divmod(A[i], 10)
if i: A[i-1] += carry
if carry:
B=list(str(carry))
A=B+A
return A
A=[1,2,3]
addToArrayForm(A, 5000)
for i in range(len(A) ):
print (A[i])
结果表明:1,2,3
:
但我在期待5,0,1,2,3,
问题出在哪里
您的原始代码的问题是命令
A = B+A
没有达到您的预期效果。我不确定,因为您的函数返回一个给定的值(新的、更新的A
),但是您的主程序假定列表已经更改您返回的值就是您期望的值。但是,它不再是原始对象
A
。表达式B+A
建立一个新的列表;您的局部变量A
被更改为指向该变量并返回。。。你的主程序忽略了它做一个简单的改变:
输出:
更多问题
请注意,这是不可持续的,您不能在此列表上进行额外的计算,因为您将
B
的元素保留为字符串,而不是整数。我想,你会想把它们转换的另一种方式
如果您想更改一个in-place,请尝试将这些数字按到列表的开头,in-place:
示例
您可以通过将
A
转换为整数,将其添加到K
,然后将A
替换为总和来完成,这应该可以工作,而不管K
(或A
)中的位数是多少输出:
相关问题 更多 >
编程相关推荐