为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中编写一系列if语句的有效方法?

在Python中编写一系列if语句的有效方法?

慕森卡 2023-08-08 17:28:05
我有一段代码想重写以使其更有效。我正在使用Python工作,并且没有像Java中那样的switch-break语句,但我觉得类似的结构可以工作。我特别谈论的代码是:def update(arm, array1, array2, array3, array4, array5):    # If the array is empty, add a zero    if not array1:        array1.append(0)    if not array2:        array2.append(0)    if not array3:        array3.append(0)    if not array4:        array4.append(0)    if not array5:        array5.append(0)一般来说,有什么好方法可以避免在 Python 中编写一系列这样的 if 语句,同时还遍历并检查每个数组的特定函数?
查看完整描述

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])


查看完整回答
反对 回复 2023-08-08
?
哔哔one

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]


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 399 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信