簡體   English   中英

將兩個列表的總和作為新列表中的元素返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM