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

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

忽略排除條件的遞歸函數(shù)

忽略排除條件的遞歸函數(shù)

BIG陽 2022-07-12 09:46:58
我可能很厚,但我很困惑為什么這個遞歸函數(shù)忽略了我提供的排除條件。在下面的代碼中,我取一個基值,并從另一個函數(shù)中獲取對應值的列表。列表中的每個值都需要被處理,并且需要獲取它自己的對應值列表,為此會發(fā)生相同的過程,直到處理完所有相關值。為避免兩次處理任何值,我在其中添加了一個條件the_loop,旨在僅處理尚未處理的值。每次處理一個值時,它都會被添加到排除列表中,并且應該跳過循環(huán)。def the_recursive_func(key):   values = get_values(key) # values is a list of numbers   processed_values = {}   def the_loop(list_of_values):      not_processed = [v for v in list_of_values if v not in processed_values.keys()]      for v in not_processed:          processed = process_value(v)          processed_values[v] = processed          new_values_list = get_values(v)          the_loop(new_values_list)   the_loop(values)   return processed_values相反,我兩次處理了很多值。我正在努力看看這是哪里出了問題。如果我將 for 循環(huán)更改為:      for v in not_processed:          if v in processed_values.keys():             continue          processed = process_value(v)          processed_values[v] = processed          new_values_list = get_values(v)          the_loop(new_values_list)然后我得到了我正在尋找的結果,但是 A)這是意大利面條,并且 B)我缺少一些基本的東西,為什么初始代碼不起作用。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

您只是在函數(shù)開頭排除值。如果您需要排除在循環(huán)的早期迭代中處理的值(可能在遞歸中),則需要在每次循環(huán)中進行測試。


    def the_loop(list_of_values):

        for v in list_of_values:

            if v in processed_values:

                continue

            processed = process_value(v)

            processed_values[v] = processed

            new_values_list = get_values(v)

            the_loop(new_values_list)


查看完整回答
反對 回復 2022-07-12
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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