zoukankan      html  css  js  c++  java
  • 列表解析,集合解析,字典解析,

    1. 列表解析

    1.1. 語法: 

      [ 表達式 for 元素 in 可迭代對象 if 條件 ]

      • [ ]表示要生成一個列表
      • 表達式為會放入生成的列表中的元素
      • for表示for循環
      • if為可選條件, 如果if存在那麼只有當if的條件為真的時候才能將表達式放入生成的列表當中

    1.2. 用途:

    1. 列表的初始化,用於生成一些有規律的列表

    2. 用於列表元素的篩選(挑選/剔除出一個列表當中滿足某些特殊要求的元素

    ps: 關於第一點: 有規律表示的是可以使用表達式表示出來的規律,比如正數(n > 0),奇數(n % 2 != 0), 平方數(n**2)........但是諸如質數,無理數這一類不能簡單的表示的元素是無法使用列表解析的(當然,也不是絕對的,不強擼灰飛煙滅的道理大家都懂)

    1.3. 舉例說明:

    1.3.1. 生成一個列表他們是1-9所有整數的平方

    1.3.1.1. 使用普通的迭代實現
    lis = []
    for i in range(1,10):
        lis.append(i**2)

    結果:

      [1, 4, 9, 16, 25, 36, 49, 64, 81]

    1.3.1.2. 使用列表解析
    lis = [ _**2 for _ in range(1, 10)]
    # _也是一個普通的變量,但是由於此處的表達式僅僅用於迭代,不會二次使用,所以使用_是為了告知閱讀的人這一點,提高代碼可讀性
    # 如果依舊不明白可以查看Python標識符的命名規則

    結果:

      [1, 4, 9, 16, 25, 36, 49, 64, 81]

    1.3.2. 篩選出列表中為奇數的元素

    1.3.2.1 使用迭代:
    res = []
    for i in lis:
        if i % 2 != 1:
            res.append(i)
    res

    結果:

      [4, 16, 36, 64]
     
    1.3.2.2 使用列表解析:
    res = [ _ for _ in lis if _ % 2 != 1 ]
    res

      

    結果:

      [4, 16, 36, 64]

    2. 集合解析:

    有了前面的列表解析作為鋪墊,集合解析就簡單很多了.

    2.1. 語法:

       {表達式 for 元素 in 可迭代對象 if 條件 }

    這個與列表解析唯一的區別在於方括號 []"換成了花括號 "{}"

    2.2. 舉例說明(有了前面的鋪墊,此處所有的代碼我將會寫在同一個腳本中):

    s1 = {1, 2, 6, 8, 10, 12, 13, 17, 20}
    s2 =  {1, 13, 17}
    s3 = {3, 4, 5, 6, 10, 12, 13, 14, 15, 16}
    from random import randint
    # 用於生成隨機元素
    
    from random import randint
    # 使用迭代創建集合
    s1 = set()
    for i in range(10):
      s1.add(randint(1,20))
    print("s1 =", s1)
    
    #使用迭代篩選出其中的奇數
    s2 = set()
    for i in s1:
        if i & 1 == 1:
            s2.add(i)
    print("s2 = ",s2)
    
    # 使用集合解析創建集合
    s3 = {randint(1,20) for _ in range(10)}
    print("s3 =", s3)
    
    # 使用集合解析篩選其中的奇數元素
    s4 = { _ for _ in s3 if _ & 1 != 0 }
    print("s4 =", s4)s4 = {13, 3, 5, 15}

    結果:

      s1 = {1, 2, 6, 8, 10, 12, 13, 17, 20}
      s2 =  {1, 13, 17}
      s3 = {3, 4, 5, 6, 10, 12, 13, 14, 15, 16}
      s4 = {13, 3, 5, 15}
     

    3. 字典解析:

    3.1. 語法:

      { 鍵 : 值 for 元素 in 可迭代對象 if 條件 }

    集合和字典的區別就在於冒號 " : ",集合的表達式是單個元素,而字典是鍵值對,所以我就不再舉例說明,你可以自己下去慢慢的摸索.

  • 相关阅读:
    mysql8下载安装及配置
    jdk11下载安装及环境变量配置
    展示所有商品案例
    事务(转账实例)
    Part2.7 ESLint
    Part2.6 Webpack
    Part2.5 模块化开发
    Part2.4 gulp 实践
    Part2.3 Grunt
    Part2.2 plop 使用
  • 原文地址:https://www.cnblogs.com/ltozvxe/p/12394328.html
Copyright © 2011-2022 走看看