1. 程式人生 > >Python 推導式推導序列

Python 推導式推導序列

推導式是從一個或多個迭代器快速建立序列的方法。它可以將迴圈和條件判斷結合,從而避免冗長的程式碼。

一、列表推導式

語法:

[表示式 for item in 可迭代物件]
[表示式 for item in 可迭代物件 if 條件判斷]

示例:

y = [x for x in range(1, 5)]
print(y)

結果:[1, 2, 3, 4]

y = [x * 2 for x in range(1, 5)]
print(y)

結果:[2, 4, 6, 8]

y = [x for x in range(1, 50) if x % 5 == 0]
print(y)

結果:[5, 10, 15, 20, 25, 30, 35, 40, 45]

y = [(row, col) for row in range(1, 5) for col in range(1, 5)]
print(y)

結果:[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]

y = [(row, col) for row in range(1, 7) if
row % 2 != 0 for col in range(1, 7) if col % 2 == 0] print(y)

結果:[(1, 2), (1, 4), (1, 6), (3, 2), (3, 4), (3, 6), (5, 2), (5, 4), (5, 6)]

二、字典推導式

語法:

{key表示式: value表示式 for item in 可迭代物件}

示例:

統計一串字串中各字元出現的數量

text = 'you could not see my tears cause I am in the water'
char_count = {c: text.count(c) for
c in text} print(char_count)

結果:{'y': 2, 'o': 3, 'u': 3, ' ': 11, 'c': 2, 'l': 1, 'd': 1, 'n': 2, 't': 4, 's': 3, 'e': 6, 'm': 2, 'a': 4, 'r': 2, 'I': 1, 'i': 1, 'h': 1, 'w': 1}

三、集合推導式

與列表推導式類似。

語法:

{表示式 for item in 可迭代物件}
{表示式 for item in 可迭代物件 if 條件判斷}

示例:

y = {x for x in range(1, 50) if x % 5 == 0}
print(y)

結果:{35, 5, 40, 10, 45, 15, 20, 25, 30}

四、生成器推導式(生成元組)

語法:

(表示式 for item in 可迭代物件)
(表示式 for item in 可迭代物件 if 條件判斷)

返回一個生成器物件,一個生成器只能用一次。

示例:

y = (x for x in range(1, 50) if x % 5 == 0)
print(y)

結果:<generator object <genexpr> at 0x0000025228C64518>

y = (x for x in range(1, 50) if x % 5 == 0)
for i in y:
    print(i, end=' ')

結果:5 10 15 20 25 30 35 40 45