<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 16.5.?數據中心思想編程 現在的你,可能正抓耳撓腮地狠想,為什么這樣比使用 `for` 循環和直接調用函數好。這是一個非常好的問題。通常這是一個程序觀問題。使用 `map` 和 `filter` 強迫你圍繞數據進行思考。 就此而言,你從沒有數據開始,你所做的第一件事是[獲得當前腳本的目錄路徑](finding_the_path.html "16.2.?找到路徑"),并獲得該目錄中的文件列表。這就是關鍵的一步,使你有了待處理的真實數據:文件名列表。 當然,你知道你并不關心所有的文件,而只關心測試套件。你有_太多數據_,因此你需要過濾(`filter`)數據。你如何知道哪些數據應該保留?你需要一個測試來確定,因此你定義一個測試并把它傳給 `filter` 函數。這里你應用了一個正則表達式來確定,但無論如何構建測試,原則是一樣的。 現在你有了每個測試套件的文件名 (且局限于測試套件,因為所有其他內容都被過濾掉了),但是你還需要以模塊名來替代之。你有正確數量的數據,只是_格式不正確_。因此,你定義了一個函數來將文件名轉換為模塊名,并使用這個函數映射整個列表。從一個文件名,你可以獲得一個模塊名,從一個文件名列表,你可以獲得一個模塊名列表。 如果不應用 `filter`,你也可以使用 `for` 循環結合一個 `if` 語句的方法。`map` 的使用則可以由一個 `for` 循環和一個函數調用來取代。但是 `for` 循環看起來像是個繁重的工作。至少,簡單講是在浪費時間,糟糕的話還會隱埋 Bug。例如,你需要弄清楚如何測試這樣一個條件:“這個文件是測試套件嗎?”這是應用特定的邏輯,沒有哪個語言能自動為我們寫出其代碼。但是一旦你搞清楚了,你還需要費盡周折地定義一個新的空列表,寫一個 `for` 循環以及一個 `if` 語句并手工地調用 `append` 將符合條件的元素一個個添加到新列表中,然后一路上注意區分哪個變量里放著過濾后的數據,哪個變量里放著未過濾的老數據。為什么不直接定義測試條件,然后由 Python 為你完成接下來的工作呢? 當然啦,你可以嘗試眩一點的做法,去刪除列表中的元素而不新建一個列表。但是你以前吃過這樣的虧。試圖在循環中改變數據結構是很容易出問題的。Python 是一個這樣工作的語言嗎?用多長時間你才能搞清這一點?你能確定記得你第二次這樣嘗試的安全性?程序員在和這類純技術課題較勁的過程中,花費了太多的時間,犯了太多的錯誤,卻并沒有什么意義。這樣并不可能令你的程序有所進步,只不過是費力不討好。 我在第一次學習 Python 時是抵觸列表解析的,而且我抗拒 `filter` 和 `map` 的時間更長。我堅持著我更艱難的生活,固守著類似于 `for` 循環和 `if` 語句以及一步步地以代碼為中心的編程方式。而且我的 Python 程序看起來很像是 Visual Basic 程序,細化每一個函數中的每一個操作步驟。它們卻有著同樣的小錯誤和隱蔽的 Bug。這一切其實都沒有意義。 讓這一切都遠去吧。費力不討好的編程不重要,數據重要。并且數據并不麻煩,它們不過就是數據。如果多了,就過濾。如果不是我們要的,就映射。聚焦在數據上,摒棄費力的勞作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看