Python中的推導式

2021-09-12 16:33:13 字數 2190 閱讀 6293

1.1 列表推導式介紹

python中的列表推導式可以使用非常簡潔的方法來快速生成滿足特定需求的列表,**具有非常強的可讀性。另外python的內部實現對列表推導式的大量優化,可以保證很快的執行速度

1.2 列表推導式語法

[表示式 for 變數 in 序列或迭代物件]

1.3 列表推導式案例

下面三段**的結果是等價的

alist = [x*x for x in range(10)]

print(alist)

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

alist = 

for x in range(10):

print(alist)

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

alist =list(map(lambda x: x * x ,range(10)))

print(alist)

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

2.1 生成器推導式介紹

生成器推導式的結果是乙個生成器物件,而不是列表,也不是元組。使用生成器物件的元素時,可以根據需要將其轉化為列表或者元組,也可以使用生成器物件的__next__()方法或者內建函式 next()進行遍歷,或者直接將其作為迭代器物件來使用。

2.2 生成器推導式語法

(表示式 for 變數 in 序列或迭代物件)

2.3 生成器推導式案例

1、檢視生成器的型別

atuple = (x*x for x in range(10))

print(atuple)

print(type(atuple))

at 0x000002056ec36b10>

2、使用__next__() 方法 和 next() 函式進行列印值

atuple = (x*x for x in range(10))

print(atuple.__next__())

print(next(atuple))

01

3、使用迴圈直接遍歷生成器物件中的元素

atuple = (x*x for x in range(10))

for i in atuple:

print(i,end="")

print(" ")

0 1

4 9

16 25

36 49

64 81

4、包含yield語句的函式可以用來建立可迭代的生成器物件

yield語句相當於return語句,但它返回乙個生成器物件。

# 生成斐波那契數列

def fun(): # 序列解包,同時為多個元素賦值

a,b = 1,1

while true:

yield a # 暫停執行,需要時再產生乙個新元素

a,b = b, a+b

a = fun() # 建立生成器物件

for i in range(10):

print(a.__next__(),end='')

print()11

2358

1321

3455

2.4 注意事項

不管用哪種方法訪問其元素,當所有元素訪問結束以後,如果需要重新訪問其中的元素,必須重新建立該生成器物件。

3.1 字典推導式介紹

字典推導式與上面兩種推導式的作用有相似之處,都是加強**的可讀性,加快執行速度。

3.2 字典推導式語法

3.2 字典推導式案例

1、第乙個案例

adict = 

print(adict)

2、第二個案例

x = [4,5,6,7]

y = ['1','2','3','4']

adict =

print(adict)

python中的列表推導式 字典推導式 對檔案使用

字典推導式 city rate.txt 儲存資料如下 110000 0.88 120000 0.65 130100 0.65 130200 0.65 130300 0.65 將檔案中的資料轉換成 字典 鍵值對 方法 這個方法在python3中可用,在python2.7中用不了會出錯 code to ...

python 推導 Python 推導式

python 語言有一種獨特的語法,它可以用最簡單的方式生成乙個列表 元組或字典,它們叫推導式。常見的推導式 列表推導式 字典推導式 集合推導式 列表推導式 列表推導式可以快速生成乙個列表,其語法格式為 x x for x in range 6 結果 0,1,4,9,16,25 相當於 l for ...

python中的列表推導式

類似於這樣 x for x in range 101 x for x in range 10 if x 2 0 x y for x in range 10 for y in range 10 式子,就叫做列表推導式 列表推導式的好處就是能快速生成列表 列表推導式的好處就是浪費記憶體 空間複雜度太大 ...