第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Python 深入遍歷數(shù)組。樹

Python 深入遍歷數(shù)組。樹

侃侃爾雅 2021-09-01 19:17:41
需要有關(guān)循環(huán)的建議。我有一個元素數(shù)組。我需要遍歷數(shù)組并檢查每個元素的正則表達(dá)式。如果元素與正則表達(dá)式匹配,我將調(diào)用一個函數(shù),該函數(shù)返回新的元素數(shù)組。然后,在繼續(xù)迭代之前,我應(yīng)該循環(huán)遍歷這個新元素數(shù)組,執(zhí)行相同的過程。這就像樹中的深度優(yōu)先搜索。似乎我需要使用“while”循環(huán),但我無法弄清楚邏輯。例如:def get_elements(element):   #some code   return elementsdef loop_through_elements(elements):    for element in elements:       if re.search("myRegExp", element):          elements = get_elements(element);       else:          return element
查看完整描述

3 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊

如果你想對你的元素進(jìn)行深度優(yōu)先迭代,你可以考慮這樣的邏輯:

def loop_through_elements(elements):    
for element in elements:      
 if re.search("myRegExp", element):
          child_elements = get_elements(element)
          return loop_through_elements(child_elements)       
          else:          
          return element

有 3 件事與您的代碼不同:

  1. 您要確保在獲得新元素時不會覆蓋“元素”變量。相反,我稱這些為“child_elements”。

  2. 我在函數(shù) loop_through_elements 中添加了對 loop_through_elements 的調(diào)用。這稱為遞歸!如果這個概念對你來說是新的,我建議你多讀一點,因為這個例子可能不是一個學(xué)習(xí)遞歸的超級清晰的地方。

  3. 我已經(jīng)添加了另一個 return 語句,您應(yīng)該考慮這個函數(shù)現(xiàn)在做什么以及它是否適合您想要它做什么。當(dāng)您在樹的“更深”級別中找到與正則表達(dá)式不匹配的元素時會發(fā)生什么?如果一切都與正則表達(dá)式匹配,您是否保證檢查整棵樹?如果您完成 for 循環(huán)而沒有在樹中“深入”,您是否應(yīng)該有一些特殊條件?


查看完整回答
反對 回復(fù) 2021-09-01
?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗 獲得超10個贊

您可以嘗試使用遞歸函數(shù)并在其定義中調(diào)用“l(fā)oop_through_elements(elements)”。


def loop_through_elements(elements):

    for element in elements:

        if re.search("myRegExp", element):

            loop_through_elements(get_elements(element))

        else:

            return element


查看完整回答
反對 回復(fù) 2021-09-01
?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗 獲得超4個贊

如果我們假設(shè)每個元素是字符串或可交互類型(例如列表),我們可以使用遞歸解決這個問題:


def examine_element(element):

    """ Examine a single element

    """

    if re.search("myREgExp", element):

        pass # TODO


def examine_each_element(elements):

    """ Examine all elements recursively

    """

    for element in elements:

        if isinstance(str, element):

            # This element is a single element

            examine_element(element)

        else:

            # This element represents multiple elements

            examine_each_element(elements)

請注意,這種方法有一些限制,您應(yīng)該注意:


如果您的結(jié)構(gòu)不是 DAG(有向無環(huán)圖),這將永遠(yuǎn)循環(huán)。既然你提到它是一棵樹,你應(yīng)該沒問題。

如果您的樹太大,這將失敗,因為您將耗盡堆??臻g。在這種情況下,您應(yīng)該嘗試使用迭代方法。


查看完整回答
反對 回復(fù) 2021-09-01
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號