2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
怎么樣:
def apply_f(a, b, f):
if isinstance(a, list):
return [apply_f(item_a, item_b, f) for item_a, item_b in zip(a, b)]
else:
return f(a, b)
result = apply_f(input1, input2, add)

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊
假設(shè)列表的長度總是正確的(你可以檢查一下),讓你的函數(shù)遞歸:
def add(a, b):
if isinstance(a, list) and isinstance(b, list):
for a_sub, b_sub in zip(a, b):
return [add(a_sub, b_sub) for a_sub, b_sub in zip(a, b)]
elif "NULL" not in [a, b]:
return a + b
elif "NULL" in [a, b]:
return "NULL"
else:
raise ValueError("Wrong input shapes")
input1 = [[1, 2, "NULL"], [3, 4], [5, 6, 7, 8]]
input2 = [[9, 8, "NULL"], [7, 6], [5, 4, 3, 2]]
add(input1, input2)
輸出:
[[10, 10, 'NULL'], [10, 10], [10, 10, 10, 10]]
添加回答
舉報