[英]Return summation of two lists as elements in a new list
例如,我有兩個列表[5, 6, 3]
和[ 5, 7]
,我想返回[6,2,0]
,這基本上是 563+57 = 620 ,其中每個元素都在新列表中返回。 如果有結轉,我會得到一個更大的清單。 我可以在 python 中使用以下方法來做到這一點:
a = [5,6,3]
b = [5,7]
str_a = ''.join(map(str, a))
str_b = ''.join(map(str, b))
int(str_a)+int(str_b)
lst = [int(i) for i in str(620)]
lst
它可以擴展到多個列表並循環遍歷列表。 但是,可以通過遍歷給定列表中的每個元素來完成嗎? 與映射和連接字符串相比,這是一種首選方法嗎?
PS:當我發布它時,我很快就得到了一些反對票。 對不起,如果我不清楚,我希望現在很清楚。
謝謝你的幫助。
我得到了以下代碼的請求結果,這是 Marcos 提供的另一種方法,我也能找到。 唯一需要做的就是使用 numpy pad
將數組填充到maximum length + 1
。
def elementsum2array(arr1, arr2):
'''
1. Make the arrays of same length padding at the beginning/left side with 0's
so that arrays get the same same length of "maximum length + 1" (for carry at the end).
2. Get a new array of length "maximum length + 1".
3. Sum the elements of the arrays from last index to first index together with carry.
4. Fill the new array element with sum % 10.
5. Update carry (sum // 10).
'''
if len(arr1) == 0 and len(arr2) > 0:
return arr2
if len(arr1) > 0 and len(arr2) == 0:
return arr1
if len(arr1) == 0 and len(arr2) == 0:
return []
else:
import numpy as np
maxlen = max(len(arr1), len(arr2))
arr1dif = maxlen - len(arr1) + 1
arr2dif = maxlen - len(arr2) + 1
arr1resized = np.pad(arr1, (arr1dif, 0), 'constant')
arr2resized = np.pad(arr2, (arr2dif, 0), 'constant')
L = len(arr1resized)
arrnew = [0 for num in range(maxlen+1)]
carry = 0
elementsum = 0
for i in range(L-1, -1, -1):
elementsum = (arr1resized[i] + arr2resized[i] + carry)
arrnew[i] = elementsum % 10
#print(arrnew[i])
carry = elementsum // 10
#print(carry)
i=i-1
return arrnew
例子:
arr1 = [3,2,1,0,4,9]
arr2 = [5,1,6,4]
elementsum2array(arr1, arr2)
[0, 3, 2, 6, 2, 1, 3]
這也是在這里用 Java 完成的: sum of two arrays element wise?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.