亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 457 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號