<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 3.6.?映射 list Python 的強大特性之一是其對 list 的解析,它提供一種緊湊的方法,可以通過對 list 中的每個元素應用一個函數,從而將一個 list 映射為另一個 list。 ## 例?3.24.?List 解析介紹 ``` >>> li = [1, 9, 8, 4] >>> [elem*2 for elem in li] [2, 18, 16, 8] >>> li [1, 9, 8, 4] >>> li = [elem*2 for elem in li] >>> li [2, 18, 16, 8] ``` | | | | --- | --- | | \[1\] | 為了便于理解它,讓我們從右向左看。`li` 是一個將要映射的 list。Python 循環遍歷 `li` 中的每個元素。對每個元素均執行如下操作:首先臨時將其值賦給變量 `elem`,然后 Python 應用函數 ``elem`*2` 進行計算,最后將計算結果追加到要返回的 list 中。 | | \[2\] | 需要注意是,對 list 的解析并不改變原始的 list。 | | \[3\] | 將一個 list 的解析結果賦值給對其映射的變量是安全的。不用擔心存在競爭情況或任何古怪事情的發生。Python 會在內存中創建新的 list,當對 list 的解析完成時,Python 將結果賦給變量。 | 讓我們回過頭來看看位于 [第 2 章](../getting_to_know_python/index.html) 的函數 `buildConnectionString` 對 list 的解析: ``` ["%s=%s" % (k, v) for k, v in params.items()] ``` 首先,注意到你調用了dictionary `params` 的 `items` 函數。這個函數返回一個 dictionary 中所有數據的 tuple 的 list。 ## 例?3.25.?`keys`, `values` 和 `items` 函數 ``` >>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"} >>> params.keys() ['server', 'uid', 'database', 'pwd'] >>> params.values() ['mpilgrim', 'sa', 'master', 'secret'] >>> params.items() [('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')] ``` | | | | --- | --- | | \[1\] | Dictionary 的 `keys` 方法返回一個包含所有鍵的 list。這個 list 沒按 dictionary 定義的順序輸出 (記住,元素在 dictionary 中是無序的),但它是一個 list。 | | \[2\] | `values` 方法返回一個包含所有值的 list。它同 `keys` 方法返回的 list 輸出順序相同,所以對于所有的 `n`,`params.values()[n] == params[params.keys()[n]]` 。 | | \[3\] | `items` 方法返回一個由形如 `(_key_,_value_)` 組成的 tuple 的 list。這個 list 包括 dictionary 中所有的數據。 | 現在讓我們看一看 `buildConnectionString` 做了些什么。它接收一個 list,``params`.`items`()`,通過對每個元素應用字符串格式化將其映射為一個新 list。這個新 list 將與 ``params`.`items`()` 一一對應:新 list 中的每個元素都是 dictionary `params` 中的一個鍵-值對構成的的字符串。 ## 例?3.26.?`buildConnectionString` 中的 list 解析 ``` >>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"} >>> params.items() [('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')] >>> [k for k, v in params.items()] ['server', 'uid', 'database', 'pwd'] >>> [v for k, v in params.items()] ['mpilgrim', 'sa', 'master', 'secret'] >>> ["%s=%s" % (k, v) for k, v in params.items()] ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret'] ``` | | | | --- | --- | | \[1\] | 請注意我們正在使用兩個變量對 list `params.items()` 進行遍歷。這是[多變量賦值](declaring_variables.html#odbchelper.multiassign "3.4.2.?一次賦多值")的另一種用法。`params.items()` 的第一個元素是 `('server', 'mpilgrim')`,所以在 list 解析的第一次遍歷中,`k` 將為 `'server'`,`v` 將為 `'mpilgrim'`。在本例中,我們忽略了返回 list 中 `v` 的值,而只包含了 `k` 的值,所以這個 list 解析最后等于 ``params`.`keys`()`。 | | \[2\] | 這里我們做著相同的事情,但是忽略了 `k` 的值,所以這個 list 解析最后等于 ``params`.`values`()`。 | | \[3\] | 用一些簡單的 [字符串格式化](formatting_strings.html "3.5.?格式化字符串")將前面兩個例子合并起來 ,我們就得到一個包括了 dictionary 中每個元素的 key-value 對的 list。這個看上去有點像程序的[輸出結果](../getting_to_know_python/index.html#odbchelper.output),剩下的就只是將這個 list 中的元素接起來形成一個字符串了。 | ## 進一步閱讀 * _Python Tutorial_ 討論了另一種方法來映射 list:[使用內置的 `map` 函數](http://www.python.org/doc/current/tut/node7.html#SECTION007130000000000000000)。 * _Python Tutorial_ 展示了如何[對嵌套 list 的 list 進行解析](http://www.python.org/doc/current/tut/node7.html#SECTION007140000000000000000)。
                  <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>

                              哎呀哎呀视频在线观看