添加到整数数组:说我有A=[1,2,3]
,K = 50000
,我想将这两个加起来并得到A=[5,0,1,2,3]
,
添加它们并将进位转换为list之后,但是不知何故我无法打印出完整的数组:
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,
出问题在哪里?
答案 0 :(得分:1)
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]
答案 1 :(得分:0)
原始代码的问题是命令A = B+A
并没有达到您的期望。我不确定,因为您的函数返回了给定值(新的,更新的A
),但是您的主程序假定列表已就地更改。
您返回的值就是您期望的值。但是,它不再是原始对象A
。表达式B+A
建立一个新列表;您的 local 变量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)
...
答案 2 :(得分:0)
您可以通过将pd.DataFrame(flattened_dict)
转换为整数,将其添加到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])