Python學習筆記5 列表推導式與序列解包

2021-08-08 01:22:28 字數 1512 閱讀 3724

本篇文章介紹列表推導式與序列解包。

1. 列表推導式

列表推導式即列表的元素部分是乙個表示式。格式為:變數名後面跟上表示式。例如:

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

print alist

執行結果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

可見,它的作用在於對元素的控制或篩選。

#-*- coding: utf-8 -*-

#輸出所有大於0的數

alist=[-1,-3,4,-6,2,10]

blist=[x for x in alist if x>0]

print blist

執行結果:

[4, 2, 10]

想要更方便又不顯得冗雜,可以將列表推導式與函式結合。

#-*- coding: utf-8 -*-

#輸出所有素數

def prime(x):

"'判斷x是否為素數"

flag=0

for i in range(2,x/2+1):

if x%i==0:

flag+=1

if flag==0:

return 0

else:

return 1

alist=[3,4,5,6,7,8,9,10,11]

blist=[x for x in alist if prime(x)==0 ]

print blist

執行結果:

[3, 5, 7, 11]

列表推導式還可以進行巢狀。

a=[[1,2,3],[1,2,3],[1,2,3]]

b=[x for b in a for x in b]

print b

執行結果:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

關鍵:弄清邏輯,第乙個for是那個變數  in 哪個變數

2.序列解包

序列解包就是,同時給多個變數賦值

x,y,z=1,2,3

print x,y,z

執行結果:

1 2 3

其中要注意的是字典。字典這個東西比較麻煩,因為涉及到item,keys與values這三個關鍵字,所以在很多地方都要額外註明,序列解包的應用亦然。

序列解包應用於字典時,預設的操作物件是key。

adict=

x,y,z=adict

print x,y,z

x,y,z=adict.items()

print x,y,z

x,y,z=adict.values()

print x,y,z

執行結果:

a c b

('a', 1) ('c', 3) ('b', 2)

1 3 2

Python自學筆記 11 列表推導

用到函式的乙個常見操作是將其用於乙個列表的所有項,並使用結果來建立乙個新的列表。如果我們要生成list 1,2,3,4,5,6,7,8,9,10 能用哪種方法呢?當然最基礎的方法可以參見列表 上 但是,這種只適合項比較少的一些場景,現在我們要生成1到999的列表怎麼辦呢?list range 1,1...

Python 學習筆記4 列表推導式 替換變數

1 列表推導式 簡化 列表推倒式的例子 nums 0,1,3,4 new numss x for x in nums 迴圈沒個變數,按照x 1處理,簡化 0,1,3,4 new nums x 1 for x in nums 迴圈沒個變數,按照x 1處理,簡化 1,0,2,3 2 替換兩個變數的值,不...

Python高階06 列表推導

列表推導是一種從其他列表建立列表的方式,類似於數學中的集合推導。列表推導的使用方式非常簡單,有點類似於for迴圈。x x for x in range 10 0,1,4,9,16,25,36,49,64,81 如果想列印那些能被3整除的平方值呢?這時候可以在列表推導中新增一條if語句 x x for...