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]
添加回答
举报