<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.4.?重識列表映射 你對使用[列表解析](../native_data_types/mapping_lists.html "3.6.?映射 list")映射列表的做法已經熟知。另一種方法可以完成同樣的工作:使用內建 `map` 函數。它的工作機理和 [`filter`](filtering_lists.html "16.3.?重識列表過濾") 函數類似。 ## 例?16.10.?`map` 介紹 ``` >>> def double(n): ... return n*2 ... >>> li = [1, 2, 3, 5, 9, 10, 256, -3] >>> map(double, li) [2, 4, 6, 10, 18, 20, 512, -6] >>> [double(n) for n in li] [2, 4, 6, 10, 18, 20, 512, -6] >>> newlist = [] >>> for n in li: ... newlist.append(double(n)) ... >>> newlist [2, 4, 6, 10, 18, 20, 512, -6] ``` | | | | --- | --- | | \[1\] | `map` 接受一個函數和一個列表作為參數,\[13\] 并對列表中的每個元素依次調用函數返回一個新的列表。在這個例子中,函數僅僅是將每個元素乘以 2。 | | \[2\] | 使用列表解析的方法你可以做到相同的事情。列表解析是在 Python 2.0 版時被引入的;而 `map` 則古老得多。 | | \[3\] | 你如果堅持以 Visual Basic 程序員自居,通過 `for` 循環的方法完成相同的任務也完全可以。 | ## 例?16.11.?`map` 與混合數據類型的列表 ``` >>> li = [5, 'a', (2, 'b')] >>> map(double, li) [10, 'aa', (2, 'b', 2, 'b')] ``` | | | | --- | --- | | \[1\] | 作為一個旁注,我想指出只要提供的那個函數能夠正確處理各種數據類型,`map` 對于混合數據類型列表的處理同樣出色。在這里,`double` 函數僅僅是將給定參數乘以 2,Python 則會根據參數的數據類型決定正確操作的方法。對整數而言,這意味著乘 2;對字符串而言,意味著把自身和自身連接;對于元組,意味著構建一個包括原始元組全部元素和原始元組組合在一起的新元組。 | 好了,玩夠了。讓我們來看一些真實代碼。 ## 例?16.12.?`regression.py` 中的 `map` ``` filenameToModuleName = lambda f: os.path.splitext(f)[0] moduleNames = map(filenameToModuleName, files) ``` | | | | --- | --- | | \[1\] | 正如你在 [第?4.7?節 “使用 lambda 函數”](../power_of_introspection/lambda_functions.html "4.7.?使用 lambda 函數") 中所見,`lambda` 定義一個內聯函數。也正如你在 [例?6.17 “分割路徑名”](../file_handling/os_module.html#splittingpathnames.example "例?6.17.?分割路徑名") 中所見,`os.path.splitext` 接受一個文件名并返回一個元組 `(_name_, _extension_)`。因此 `filenameToModuleName` 是一個接受文件名,剝離出其擴展名,然后只返回文件名稱的函數。 | | \[2\] | 調用 `map` 將把 `files` 列出的所有文件名傳遞給 `filenameToModuleName` 函數,并且返回每個函數調用結果所組成的列表。換句話說,你剔除掉文件名的擴展名,并將剔除后的文件名存于 `moduleNames` 之中。 | 如你在本章剩余部分將看到的,你可以將這種數據中心思想擴展到定義和執行一個容納來自很多單個測試套件的測試的一個測試套件的最終目標。 ## Footnotes \[13\] 同前,我需要指出 `map` 可以接受一個列表、元組,或者一個像序列一樣的對象。參見前面的關于 `filter` 的腳注。
                  <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>

                              哎呀哎呀视频在线观看