因此,我正在嘗試撰寫一個函式elem_sum(lst1:List[int], lst2:List[int]),該函式將 2 個輸入作為串列,并在lst1和 中按元素回傳總和lst2。lst1并且lst2可能有不同的長度。假設lst1 = [a, b, c]和 l st2 = [d, e]。您的函式應該回傳[a d, b e, c].
例子
elem_sum([1, 2, 3], [10, 20]) == [11, 22, 3]
elem_sum([1, 2, 3], [10, 20, 30, 40]) == [11, 22, 33, 40]
elem_sum([1], [2, 12]) == [3, 12]
這是我嘗試過的,有效......
from itertools import zip_longest
def elem_sum(lst1, lst2):
return [sum(t) for t in zip_longest(lst1, lst2, fillvalue=0)]
但是,我想找到一個無需使用itertoolsAND即可作業的解決方案Import……我應該在代碼中添加或更改什么?
uj5u.com熱心網友回復:
itertools如果您采用如下方法,則無需使用
def elem_sum(ls1, ls2):
iter_list, other_list = (ls1, ls2) if len(ls1) < len(ls2) else (ls2, ls1)
return [sum(x) for x in zip(iter_list, other_list)] other_list[len(iter_list):]
uj5u.com熱心網友回復:
一種方法可能是用內置的 zip 函式替換 zip_longest,但正如您所知,它只會剪切較長陣列的剩余元素。因此,您可以做的是使用 zip,然后僅附加較長陣列的其余元素:
def elem_sum(lst1, lst2):
shorter_length = min(len(lst1), len(lst2))
return [sum(t) for t in zip(lst1, lst2)] lst1[shorter_length:] lst2[shorter_length:]
[shorter_length:]在較短的陣列上使用索引只會回傳一個空陣列。因此,我們可以將它們連接起來。
uj5u.com熱心網友回復:
將零附加到較短的:
def elem_sum(l1, l2):
len_1 = len(l1)
len_2 = len(l2)
max_len = max(len_1, len_2)
min_len = min(len_1, len_2)
for i in range(max_len-min_len):
if len_2 < len_1:
l2.append(0)
if len_1 < len_2:
l1.append(0)
l_r = []
for i in range(max_len):
l_r.append(l1[i] l2[i])
return l_r
print(elem_sum([1, 2, 3], [10, 20]))
print(elem_sum([1, 2, 3], [10, 20, 30, 40]))
print(elem_sum([1], [2, 12]))
輸出:
[11, 22, 3]
[11, 22, 33, 40]
[3, 12]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380922.html
