<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      翻譯:《實用的Python編程》07_02_Anonymous_function

      目錄 | 上一節 (7.1可變參數) | 下一節 (7.3 返回函數)

      7.2 匿名函數和 Lambda

      再探列表排序

      列表可以使用 sort 方法進行原地(in-place)排序

      s = [10,1,7,3]
      s.sort() # s = [1,3,7,10]
      

      也可以進行降序排序(譯注:原文使用的是 sort in reverse order,很多時候翻譯為倒序排序或者反向排序,個人認為容易引起歧義,故翻譯為降序排序):

      s = [10,1,7,3]
      s.sort(reverse=True) # s = [10,7,3,1]
      

      對單個列表排序似乎非常簡單,但是,如果對字典列表排序,那么我們怎么做呢?

      [{'name': 'AA', 'price': 32.2, 'shares': 100},
      {'name': 'IBM', 'price': 91.1, 'shares': 50},
      {'name': 'CAT', 'price': 83.44, 'shares': 150},
      {'name': 'MSFT', 'price': 51.23, 'shares': 200},
      {'name': 'GE', 'price': 40.37, 'shares': 95},
      {'name': 'MSFT', 'price': 65.1, 'shares': 50},
      {'name': 'IBM', 'price': 70.44, 'shares': 100}]
      

      通過什么樣的規則進行排序呢?

      你可以使用鍵函數(key function)指導排序。鍵函數是這樣的一種函數:接受一個字典并且返回一個用于排序的值。

      def stock_name(s):
          return s['name']
      
      portfolio.sort(key=stock_name)
      

      排序結果如下:

      # Check how the dictionaries are sorted by the `name` key
      [
        {'name': 'AA', 'price': 32.2, 'shares': 100},
        {'name': 'CAT', 'price': 83.44, 'shares': 150},
        {'name': 'GE', 'price': 40.37, 'shares': 95},
        {'name': 'IBM', 'price': 91.1, 'shares': 50},
        {'name': 'IBM', 'price': 70.44, 'shares': 100},
        {'name': 'MSFT', 'price': 51.23, 'shares': 200},
        {'name': 'MSFT', 'price': 65.1, 'shares': 50}
      ]
      

      回調函數

      在上面的示例中,鍵函數是一個回調函數(callback function)。sort() 方法調用了 stock_name()函數,然后 stock_name() 函數返回一個值給 sort() 方法。通常,回調函數是一個簡短的單行函數,只用于一個操作。程序員經常會要求提供一種快捷方法來指定這種額外的處理。

      Lambda: 匿名函數

      在之前的排序示例中,我們可以使用 lambda, 而不是創建(具名)函數。

      portfolio.sort(key=lambda s: s['name'])
      

      上面的代碼創建了一個匿名(unnamed)函數用來計算單個表達式,比初始代碼短很多。

      def stock_name(s):
          return s['name']
      
      portfolio.sort(key=stock_name)
      
      # vs lambda
      portfolio.sort(key=lambda s: s['name'])
      

      使用 lambda

      • lambda 是受到嚴格限制的。
      • 只允許一個表達式。
      • 沒有 ifwhile 之類的語句。
      • 多和其它函數一起使用,類似于 sort() 方法。

      練習

      讀取股票投資組合數據,并將數據轉換為列表:

      >>> import report
      >>> portfolio = list(report.read_portfolio('Data/portfolio.csv'))
      >>> for s in portfolio:
              print(s)
      
      Stock('AA', 100, 32.2)
      Stock('IBM', 50, 91.1)
      Stock('CAT', 150, 83.44)
      Stock('MSFT', 200, 51.23)
      Stock('GE', 95, 40.37)
      Stock('MSFT', 50, 65.1)
      Stock('IBM', 100, 70.44)
      >>>
      

      練習 7.5:對字段進行排序

      請嘗試下面的語句,這些語句按股票名稱的字母順序對投資組合數據進行排序。

      >>> def stock_name(s):
             return s.name
      
      >>> portfolio.sort(key=stock_name)
      >>> for s in portfolio:
                 print(s)
      
      ... inspect the result ...
      >>>
      

      在此部分,stock_name() 函數從 portfolio 列表的單個條目中提取股票名稱。sort() 方法使用 stock_name() 函數的返回值進行比較并排序。

      練習 7.6:使用 lambda 對字段進行排序

      請嘗試使用 lambda 表達式,按股份數目對投資組合數據進行排序:

      >>> portfolio.sort(key=lambda s: s.shares)
      >>> for s in portfolio:
              print(s)
      
      ... inspect the result ...
      >>>
      

      嘗試按每只股票的價格對投資組合數據進行排序:

      >>> portfolio.sort(key=lambda s: s.price)
      >>> for s in portfolio:
              print(s)
      
      ... inspect the result ...
      >>>
      

      注意事項:lambda 是一種非常有用的快捷方式,因為它讓你直接在 sort() 方法的調用中定義一個特殊的處理函數,而不必事先定義一個單獨的函數。

      目錄 | 上一節 (7.1可變參數) | 下一節 (7.3 返回函數)

      注:完整翻譯見 https://github.com/codists/practical-python-zh

      posted @ 2021-03-21 23:15  codists  閱讀(44)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无码欧亚熟妇人妻AV在线外遇| 日韩美女亚洲性一区二区| 和林格尔县| 中文午夜乱理片无码| 欧美人与性囗牲恔配| 热久久美女精品天天吊色| 国产360激情盗摄全集| 国产精品自在自线视频| 老司机亚洲精品一区二区| 永久免费在线观看蜜桃视频| 国产欧美综合在线观看第十页| 日本大片在线看黄a∨免费| 亚洲国产精品老熟女乱码| 一本精品99久久精品77| 饥渴的熟妇张开腿呻吟视频| 国产在线观看91精品亚瑟| 日韩有码中文字幕国产| 国产中文字幕在线一区| 欧美亚洲另类自拍偷在线拍| 国产av丝袜熟女一二三| 国内精品无码一区二区三区| 九九热精品免费在线视频| 国产日韩一区二区四季| 不卡一区二区国产精品| 国内不卡一区二区三区| 夜夜躁狠狠躁日日躁视频| 亚洲国产精品综合久久20| 亚洲天堂av在线免费看| 久久综合老鸭窝色综合久久| 鄂温| 国产自产av一区二区三区性色 | 91午夜福利一区二区三区| 亚洲第一区二区国产精品| aa性欧美老妇人牲交免费| 少妇放荡的呻吟干柴烈火动漫| 日韩一区二区在线看精品| 草草浮力影院| 亚洲午夜精品国产电影在线观看 | 日韩一区二区黄色一级片| 久久精品人妻无码专区| 女人高潮被爽到呻吟在线观看|