[Python]列表生成式


原創文章,歡迎轉載。轉載請註明:轉載自 祥的博客
原文鏈接:https://blog.csdn.net/humanking7/article/details/97011206


Python列表生成式

Python文檔整理目錄: https://blog.csdn.net/humanking7/article/details/80757533

0. 環境

  • Python 3.6

1. 基礎

列表生成式 就是一個用來生成列表的 特定語法形式表達式
列表生成式List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式

1.1. 基礎語法格式

# 基礎語法格式
[exp for iter_var in iterable]

解釋:

  1. 迭代iterable中的每個元素;
  2. 每次迭代都先把結果賦值給iter_var,然後通過exp得到一個新的計算值;
  3. 最後把所有通過exp得到的計算值以一個新列表的形式返回。

等價於:

L = []
for iter_var in iterable:
    L.append(exp)

1.2. 循環嵌套語法格式

# 循環嵌套語法格式
[exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

解釋:

  • 每迭代 iterable_A 中的一個元素,就把 ierable_B 中的所有元素都迭代一遍

等價於:

L = []
for iter_var_A in iterable_A:
    for iter_var_B in iterable_B:
        L.append(exp)

1.3. 循環+嵌套判斷語法格式

# 循環+嵌套判斷語法格式
[exp2 for iter_var in iterable if exp1]

等價於:

L = []
for iter_var in iterable:
    if exp1:
        L.append(exp2)

2. 例子

2.1. eg.基礎語法格式

In [18]: [x*x for x in range(1, 6)]
Out[18]: [1, 4, 9, 16, 25]

2.2. eg.循環嵌套語法格式

In [19]: [ m+n for m in 'ABC' for n in '123']
Out[19]: ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

2.3. eg.循環+嵌套判斷語法格式

In [20]: [ x*x for x in range(1, 6) if x%2==0]
Out[20]: [4, 16]

In [21]: [ x*x for x in range(1, 6) if x%2==1]
Out[21]: [1, 9, 25]

2.4. eg.篩選列表中的str變量,並使其變成小寫

In [22]: L1 = ['Hello', 'World', 18, 'Apple', None]

In [23]: L2 = [x.lower() for x in L1 if isinstance(x, str)]

In [24]: L2
Out[24]: ['hello', 'world', 'apple']

3. 參考文獻

廖雪峯的Python教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1017317609699776


OK!
以上,Enjoy~


讚賞碼New

i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章