Python這句話什么意思,語法有點怪?
問題描述
filelist = [x for x in os.listdir() if os.path.isfile(x)]
問題解答
回答1:相當于:
filelist = []for x in os.listdir(): if os.path.isfile(x):filelist.append(x)
這是列表解析的內容.
回答2:列表生成式相當于。os.listdir()需要一個參數,你要得到哪個路徑下的list。
In [54]: filelist = []In [55]: for x in os.listdir('.'): ...: if os.path.isfile(x): ...: filelist.append(x) ...:In [56]:
使用列表生成式比[].append() 快一點。你可以使用大批量的測試一下。為什么快呢。python listobject 模型的機制有關系,有時間可以讀讀python 源碼,C語言寫的
回答3:定義:列表推導式(又稱列表解析式)提供了一種簡明扼要的方法來創建列表。
規范:variable = [out_exp for out_exp in input_list if out_exp == 2]
例子:multiples = [i for i in range(30) if i % 3 is 0]print(multiples)
Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
場景:循環中的邏輯比較簡單時可用推導式代替,以增加代碼可讀性和潔癖
回答4:列表推導式列表生成式
順序如下:
