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

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

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

      Python中的列表推導式和生成器表達式 (List Comprehension & Generator Expressions)

      列表(list)是pthon中最常用的數據結構之一,有序,可變。

       

      1.生成一個列表最原始的方法

       

      def is_leap(year: int):

          return year%4 == 0 and (year%100 != 0 or year%400 == 0)

       

      Leap_Year_List = []    #空列表 或者用 Leap_Year_List = list()

       

      for item in range(1582, 2022):

          if is_leap(item):

              Leap_Year_List.append(item)  #通過append方法填充列表元素

       

      2.列表推導式(List Comprehension)

      當然,還有其他的方法來生成列表,用列表推導式我們可以將上面的代碼簡化至一行:

      Leap_Year_List =[item for item in range(1582, 2022) if is_leap(item)]  #通過for循環和if條件生成列表

       

      note1: range()函數本身返回的也是整數列表

      note2: 列表推導式里可以用多個for循環,返回的則是笛卡爾積

       

      3.生成器表達式( Generator Expressions)

       

      我們把列表表達式的[]換成()就得到了一個新的返回對象:生成器。

      Leap_Year_Generator = (item for item in range(1582, 2022) if is_leap(item))   #得到生成器的這個方法稱之為生成器表達式

       

      所以,推導式和生成器類型不一樣(一個是數據結構,一個是某種函數)導致它們的適用場景有所不同。生成含大量元素的列表會占用極大的內存空間,這種場景下一邊循環一邊計算效率更高。比如計算1到1,000,000,000的平方和,我們并不需要先得到一百萬個元素的列表再求和,可以直接用生成器表達式來求和:

      total = sum(num * num for num in range(1, 1000000000))

       

      當列表是我們最終需要的結果時,用列表推導式;當列表只是我們運算的中間過程時,用生成器表達式。

       

      note1: 生成器是一種特殊的迭代器。它的本質是一個能不斷產生值的函數,它的意義在于提供了一種更為節省內存的方式去得到可迭代對象。

      note2: 如果一個函數里有yield, 那它就是生成器。

      note3: 迭代器是類,里面有數據成員(可迭代對象中的元素),有方法(iteration(),next())

       

       

      4.拓展

      舉個生成器的例子:讀取文本文件獲得版本號

      def get_version():

          with open("version.txt", "r") as fi:

              result = next(it for it in fi if it.startswith("__version__")) #生成器表達式

              # txt中內容為  __version__ = "1.0.1"

          return result.split('"')[1]   #結果為1.0.1

       

      另一個例子:讀取文本文件返回列表

      def get_install_list():

          with open("sw_list.txt", "r") as fi:

              lines = fi.readlines()  

              #txt中為多行內容

          return [line.strip("\n") for line in lines if line] #列表推導式

       

      posted @ 2021-02-03 19:00  henkenen  閱讀(429)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲偷偷自拍码高清视频| 中文字幕无码av不卡一区| 青青草无码免费一二三区| 人妻少妇无码精品专区| 97在线视频人妻无码| 无码内射中文字幕岛国片 | 宁南县| 激情综合五月网| 国产偷国产偷亚洲高清午夜| 成在人线av无码免费看网站直播| 国产日韩入口一区二区| 国产精品亚洲二区在线播放| 一区二区三区精品自拍视频| www夜片内射视频日韩精品成人| 亚洲精品一区二区三区色| 视频二区国产精品职场同事| 亚洲色大成网站www在线| 中文字幕精品亚洲二区| 丰满爆乳一区二区三区| 亚洲精品第一页中文字幕| 日韩熟女精品一区二区三区| 亚洲精品国产自在现线最新| 日韩精品亚洲专在线电影| 国产精品成人午夜福利| 国产精品第二页在线播放| 夜夜躁狠狠躁日日躁| 人妻内射一区二区在线视频| 2018av天堂在线视频精品观看 | 久久国产乱子伦免费精品| 国产一区二区三区四区五区加勒比 | 日韩一卡二卡三卡四卡五卡| 丰满人妻一区二区三区无码AV| 久久毛片少妇高潮| 国内精品一区二区不卡| 亚洲一区二区中文字幕| 精品精品久久宅男的天堂| 国产午夜视频在线观看| 亚洲中文字幕有综合久久| 少妇被粗大的猛进出69影院| 亚洲精品国产成人| 国产69成人精品视频免费|