胡说叔叔
您可以更改该函数以接受任意数量的数组*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])
哔哔one
您可以为任何想要为空列表分配零元素的函数定义一个装饰器。这将允许您添加初始化,而无需更改函数内的任何内容。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@noEmptyListsdef update(arm, array1, array2, array3, array4, array5): print(arm, array1, array2, array3, array4, array5)update(1,[],[],[],[],[])# 1 [0] [0] [0] [0] [0]