<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 3.4.4 嵌套循環 為了實現復雜的算法,控制結構可以相互嵌套,即一個控制結構處于另一個控制結構的 內部。前面我們見過 if 結構的嵌套,現在我們討論循環的嵌套。 先考慮“一維”數據結構——由簡單數據值構成的列表,為了遍歷列表以處理其中數據, 我們需要一個循環。例如用一個循環來計算列表中所有數據之和: ``` >>> a = [1,2,3,4,5] >>> sum = 0 >>> for i in a: sum = sum + i >>> print sum 15 ``` 但是一個循環不足以解決“二維”數據結構——如矩陣。第 2 章中介紹過,編程語言中 用“列表的列表”來表示矩陣。用一個循環可以每次取列表中的一個值來處理,但這個值本 身又是一個列表,因此又需要一個循環來遍歷之。這樣我們就得到一個嵌套的循環結構來處 理二維數據結構,如下面的代碼所演示的那樣: ``` >>> a = [[11,12,13,14],[21,22,23,24],[31,32,33,34]] >>> sum = 0 >>> for i in a: for j in i: sum = sum + j >>> print sum 270 ``` 可見,為了遍歷矩陣,需要由外循環和內循環嵌套來完成:外循環負責對所有的行進行 遍歷,而內循環負責對當前行的每一列進行遍歷。首先由外循環取一行,再由內循環處理這 一行;當內循環處理完一行,控制又轉到外循環去取下一行。例如,外循環控制變量 i 取第 一行[11,12,13,14]時,內循環控制變量 j 取遍 i 中的 11、12、13 和 14 進行處理,處理完畢后 i 再取第二行進行處理,依次類推。 當然,二維數據結構不一定都像矩陣這么整齊,每一行數據可能有長有短,因此在用嵌 套循環來遍歷所有數據時,內循環的循環次數常常要根據外循環的循環控制變量值做相應調 整。作為例子,請看下面這個打印乘法口訣表的嵌套循環: ``` >>> for i in range(1,10): for j in range(1,i+1): print "%dx%d=%-2d" % (j,i,j*i), print 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 ``` 這段代碼雖然很簡單,卻展示了嵌套循環編程中常用的兩個技巧。首先,內循環的循環 次數(由 range(1,i+1)決定)依賴于外循環的循環控制變量 i,因為對 i=1 只有一個乘式,對 i=2 有兩個乘式,…,對 i=9 有九個乘式。其次,為了將每個 i 值所產生的乘式放在同一行上, 且不同 i 值的乘式放在不同行上,我們在外循環的循環體中與內循環 for 語句并列寫了一條 print 語句,以便每當內循環結束就換一次行;而在內循環的循環體中,print 語句的最后是用 逗號結尾的,表示每次循環期間不換行。 設計嵌套循環時,一般先設計外循環,這時并不考慮內循環要做的事。當把外循環的結 構搭建好之后,再去設計內循環的任務,這時又不需要考慮外循環。最后將內外兩個循環的 代碼融合在一起,就得到了完整的嵌套循環代碼。 和兩重嵌套循環類似,嵌套循環還可以由三重循環構成,用于處理三維數據結構。依此 類推,n 重嵌套循環可用于處理 n 維的數據結構。 3.4.3 節中介紹的 break 語句只能跳出包圍它的那一層循環。在嵌套循環結構的情況下, 一條 break 語句雖然跳出了本層循環,但跳不出外層循環,因此控制仍然可能處于某個循環 體中。例如,我們改寫打印乘法口訣表的程序,使得一部分乘式不顯示。代碼如下: ``` >>> for i in range(1,10): for j in range(1,i+1): if j &gt; 4: break print "%dx%d=%-2d" % (j,i,j*i), print 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 1x6=6 2x6=12 3x6=18 4x6=24 1x7=7 2x7=14 3x7=21 4x7=28 1x8=8 2x8=16 3x8=24 4x8=32 1x9=9 2x9=18 3x9=27 4x9=36 ``` 從上面的代碼和結果可以看出,對于內循環所處理的每一行,j&gt;4 的乘式都被 break 跳過了, 但是外循環仍能繼續執行。
                  <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>

                              哎呀哎呀视频在线观看