添加到数组 - 整数形式 - 如何显示完整结果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加到数组 - 整数形式 - 如何显示完整结果?相关的知识,希望对你有一定的参考价值。
添加到数组 - 整数形式:说我有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
更改为指向并返回...您的主程序忽略它。
做一个简单的改变:
A=[1,2,3]
A = addToArrayForm(A, 50000) # I corrected this to 50000; you were short a 0
输出:
5
0
1
2
3
更多问题
请注意,这是不可持续的 - 您无法在此列表中进行额外的数学运算,因为您已将B
的元素保留为字符串,而不是整数。我想你会转换那些。
其他方式 ...
如果您确实要在适当的位置更改A,请尝试将这些数字推到列表的开头,到位:
...
if carry:
B = list(str(carry))
for dig in B:
A.insert(0, int(dig))
A=[1,2,3]
addToArrayForm(A, 50000)
...
另一答案
def add(a, k):
return [int(j) for j in str(k + int(''.join(str(i) for i in a)))]
例
>>> add([1,2,3], 50000)
[5, 0, 1, 2, 3]
另一答案
您可以通过将A
转换为整数,将其添加到K
,然后使用和替换A
来实现,无论K
(或A
)中的位数如何,这都应该有效。
def addToArrayForm(A, K):
a = 0
for d in A:
a = a*10 + d
A[:] = [int(d) for d in str(a + K)]
return A
A = [1, 2, 3]
addToArrayForm(A, 50000)
for i in range(len(A)):
print(A[i])
输出:
5
0
1
2
3
以上是关于添加到数组 - 整数形式 - 如何显示完整结果?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective-C中将二维整数数组对象添加到NSMutableArray?