for遍历,首先考虑导出式和filter函数
列表导出公式也称为列表解析公式,根据现有列表,有效地编制新列表,进行有效的列表检索和条件判断。
派生表达式的语法格式如下
[表达式for迭代变量in可迭代对象[if表达式]这里的[if表达式]不是必需的,可以忽略。
简单的列表分析
[ item * 2福里teminrange (10 ) ]
[0、2、4、6、8、10、12、14、16、18]条件列表分析
只有if语句
[item*2foriteminrange(10 ) if item 5]
[12、14、16、18 ]包含if-- else的语句
[ item *2if item5else item *3foriteminrange (10 )
[0、3、6、9、12、15、12、14、16、18]条件子句在for之前时必须带else,条件子句在for之后时不得带else。 不然我就报告错误!
多重循环的列表分析
[(I,j ) forIinrange(3) for j in range(3)3]
[ (0,0 ),0,1 ),0,2 ),1,0 ),1,1 ),2 ),0 ),2,1 ),2,2,2 ),2 ]同样也可以进行词典和元组的分析
d={ ' student % d ' % item : randint (0,10 ) foriteminrange (10 ) }
{k:V for k,v in d.items () if v 5 }
{'student3': 10、' student5': 6、' student6': 7、' student8': 9}输出一个文件夹中后缀为. mp4的文件名
file=[ fileforfileinos.list dir '/home/demo/' ] if file.endswith '.MP4 ' ] for循环大多数先过滤特定元素,然后再进行for循环
三角函数
过滤器(function,iterable )过滤器函数。 接收两个参数,第一个是函数,第二个是序列,序列中的每个元素作为参数传递给函数进行判断,返回True或False,最后返回True的元素放入新列表中。
注意:返回迭代器对象。 转换为列表时,可以使用list ()进行转换。
defis_odd(n ) :
返回n %2==1
L=filter(is_odd,range ) ) )
print(list(L ) ) #[1、3、5、7、9]通常使用匿名函数
L=filter(lambdax:x%2,范围(10 ) )
打印(list (l ) ) # [ 1,3,5,7,9 ]处理字符串
d={ ' student % d ' % item : randint (0,10 ) foriteminrange (10 ) }
d=filter(lambdax:not ) x%2),d.values ) )
打印(列表(d ) )