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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 問題 你需要在數據序列上執行聚集函數(比如 `sum()` , `min()` , `max()` ),但是首先你需要先轉換或者過濾數據 ## 解決方案 一個非常優雅的方式去結合數據計算與轉換就是使用一個生成器表達式參數。比如,如果你想計算平方和,可以像下面這樣做: nums = [1, 2, 3, 4, 5] s = sum(x * x for x in nums) 下面是更多的例子: # Determine if any .py files exist in a directory import os files = os.listdir('dirname') if any(name.endswith('.py') for name in files): print('There be python!') else: print('Sorry, no python.') # Output a tuple as CSV s = ('ACME', 50, 123.45) print(','.join(str(x) for x in s)) # Data reduction across fields of a data structure portfolio = [ {'name':'GOOG', 'shares': 50}, {'name':'YHOO', 'shares': 75}, {'name':'AOL', 'shares': 20}, {'name':'SCOX', 'shares': 65} ] min_shares = min(s['shares'] for s in portfolio) ## 討論 上面的示例向你演示了當生成器表達式作為一個單獨參數傳遞給函數時候的巧妙語法(你并不需要多加一個括號)。比如,下面這些語句是等效的: s = sum((x * x for x in nums)) # 顯示的傳遞一個生成器表達式對象 s = sum(x * x for x in nums) # 更加優雅的實現方式,省略了括號 使用一個生成器表達式作為參數會比先創建一個臨時列表更加高效和優雅。比如,如果你不使用生成器表達式的話,你可能會考慮使用下面的實現方式: nums = [1, 2, 3, 4, 5] s = sum([x * x for x in nums]) 這種方式同樣可以達到想要的效果,但是它會多一個步驟,先創建一個額外的列表。對于小型列表可能沒什么關系,但是如果元素數量非常大的時候,它會創建一個巨大的僅僅被使用一次就被丟棄的臨時數據結構。而生成器方案會以迭代的方式轉換數據,因此更省內存。 在使用一些聚集函數比如 `min()` 和 `max()` 的時候你可能更加傾向于使用生成器版本,它們接受的一個key關鍵字參數或許對你很有幫助。比如,在上面的證券例子中,你可能會考慮下面的實現版本: # Original: Returns 20 min_shares = min(s['shares'] for s in portfolio) # Alternative: Returns {'name': 'AOL', 'shares': 20} min_shares = min(portfolio, key=lambda s: s['shares'])
                  <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>

                              哎呀哎呀视频在线观看