Python – List Comprehension

測試環境為 CentOS 8 x86_64 (虛擬機)

List Comprehension 語法可以將一個 list 資料依據需求轉為另一個 list

參考文章 – https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

[root@localhost ~]# python3
Python 3.6.8 (default, Mar 25 2022, 11:15:52)
[GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux
Type "help", "copyright", "credits" or "license" for more information.
  • 範例 : map
    >>> squares = list(map(lambda x: x**2, range(10)))
    >>> print(squares)
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    上面範例等同以下 for in 的語法.

    >>> squares = [x**2 for x in range(10)]
    >>> print(squares)
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    說明:

    • 透過 lambda 匿名函式的方式來定義. 透過條件運算式計算出結果,其中的 iterable 為可疊代的物件(如 list 物件),語法如下:

      map(lambda parameter: expression, iterable)
      
    • range 型別的用法 – https://benjr.tw/104527
      其 Range 公式為:

      r[i] = start + step*i where i >= 0 and r[i] < stop.
      

      range(10) = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]

  • 範例 : filter
    透過 if 條件運算式篩選特定的元素,語法如下:

    newlist = [expression for item in iterable if condition]
    

    輸入參數 x 的值來自於 range(10) 物件 [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ],並透過判斷式看值是否大於 5 [ 6 , 7 , 8 , 9 ].

    >>> squares = [x**2 for x in range(10) if x > 5]
    >>> print(squares)
    [36, 49, 64, 81]
    
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料