2 回答

TA貢獻1804條經驗 獲得超8個贊
您可以更改該函數以接受任意數量的數組*args,然后使用for循環:
def update(arm, *arrays):
for index, array in enumerate(arrays):
if not array:
array.append(0)
if arm != index:
array.append(array[-1])
不僅它更短,它還適用于傳遞給 的任意數量的數組update,因此 、 等中的任何一個都update(arm, array1)可以update(arm, array1, array2)工作。
如果由于某種原因您無法更改函數的簽名,您仍然可以使用循環,但必須對循環迭代的數組進行硬編碼。
def update(arm, array1, array2, array3, array4, array5,
array6, array7, array8, array9, array10):
for index, array in enumerate(array1, array2, array3, array4, array5,
array6, array7, array8, array9, array10):
if not array:
array.append(0)
if arm != index:
array.append(array[-1])

TA貢獻1854條經驗 獲得超8個贊
您可以為任何想要為空列表分配零元素的函數定義一個裝飾器。這將允許您添加初始化,而無需更改函數內的任何內容。
def noEmptyLists(func):
def decorated(*args,**kwargs):
for a in (*args,*kwargs.values()):
if isinstance(a,list) and not a:
a.append(0)
return func(*args,**kwargs)
return decorated
@noEmptyLists
def update(arm, array1, array2, array3, array4, array5):
print(arm, array1, array2, array3, array4, array5)
update(1,[],[],[],[],[])
# 1 [0] [0] [0] [0] [0]
添加回答
舉報