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:列表推导式列表生成式
顺序如下: