本篇文章介紹列表推導式與序列解包。
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...